Как я могу перенести файлы Tomcat 5.5 stderr и stdout, когда они становятся слишком большими?

#tomcat #stdout #stderr #rollover

#tomcat #стандартный вывод #stderr #перенос

Вопрос:

Я пытался найти способ взять файлы журналов Tomcat 5.5 stderr и stdout и перенести их, когда они становятся слишком большими, но я не смог этого сделать. Теперь, пожалуйста, поймите, что это не для ведения журнала в веб-приложении. Это просто журналы stdout и stderr, которые автоматически создаются Tomcat. Опять же, они становятся слишком большими, и мне просто нужен метод для их переноса, когда они становятся слишком большими и / или с определенным интервалом времени (т. Е. Каждый день, каждый час).

Я пытался использовать log4j, но, похоже, он предназначен для ведения журнала приложений, а не только для tomcat. Я нашел метод, в котором указано, что он может перенаправлять stdout и stderr с помощью og4j (http://sysgears.com/articles/how-to-redirect-stdout-and-stderr-writing-to-a-log4j-appender#comment-749) и я написал пару вопросов на этом сайте, подробно описывающих мое тяжелое положение с ним, но я не смог заставить его работать. Если я смогу заставить этот метод работать, или если есть другой способ, который находится за пределами log4j, я был бы признателен.

Более того, можно ли было бы самому перенести файлы, скажем, на Java или perl? В качестве теста я попытался удалить файлы, в которые они записывались, но, конечно, у меня не получилось. Файлы были заблокированы Tomcat. Процесс будет таким:

Разблокируйте файл из процесса Tomcat, Проверьте, не слишком ли велик размер, если да, сохраните и закройте файл, запишите новый с новым именем файла (например, stderr01012011_1.log) Заблокируйте новый файл в процессе Tomcat

Это звучит как большая работа и, возможно, даже невыполнимо, но если я не могу заставить метод log4j работать, что я могу сделать? Спасибо.

Хотелось бы, чтобы в Apache было что-то встроенное для переноса файлов журналов stderr и stdout.

Комментарии:

1. Вы нашли решение своей проблемы?

Ответ №1:

Вы можете использовать logrotate с опцией «copytruncate». Посмотрите здесь: Как повернуть Tomcat catalina.out

Комментарии:

1. Привет, спасибо! Я очень ценю ваш ответ! Однако, и я прошу прощения за то, что не упомянул об этом ранее, я использую Windows, а не Linux / unix. Возможно, существует эквивалент logrotate на платформе Windows? Также в ссылке указано, что она предназначена для catalina.out, но, возможно, ее можно применить к другим файлам журнала, таким как stdout и stderr? Еще раз спасибо.