Нужен рабочий пример настройки log4j RollingFileAppender через свойства
Я использую log4j для ведения журнала и файл свойств для конфигурации. В настоящее время мои файлы журналов слишком большие (3,5 Гбайт слишком велико для файла журнала). Поэтому подумайте, что мне нужно использовать RollingFileAppender, но когда я делаю это, файл журнала продолжает расти слишком сильно. Я считаю, что я просто неправильно сконфигурировал его; есть ли у кого-нибудь рабочий пример настройки RollingFileAppender?
Для записи моя текущая конфигурация выглядит следующим образом:
log4j.appender.MAIN_LOG.File=${catalina.base}/logs/webtop.log
log4j.appender.MAIN_LOG=org.apache.log4j.RollingFileAppender
log4j.appender.MAIN_LOG.layout=com.mycompany.util.log.Log4JSimpleLayout
log4j.appender.MAIN_LOG.DatePattern='.'yyyy-MM-dd
log4j.appender.MAIN_LOG.MaxFileSize=10MB
log4j.appender.MAIN_LOG.MaxBackupIndex=99
log4j.appender.MAIN_LOG.append=true
log4j.rootCategory=ALL, MAIN_LOG
Альтернативой RollingFileAppender также будет прекрасное решение.
Ответы
Ответ 1
Я считаю, что я просто неправильно сконфигурировал его; есть ли у кого-нибудь рабочий пример настройки RollingFileAppender?
Кажется, это отлично работает для меня @mcherm. См. Ниже.
Вы уверены, что используете log4j.properties, что вы думаете? Попробуйте изменить .File
на другой путь, чтобы узнать, идет ли выход журнала в новый файл. Какую версию log4j вы используете? Я выполняю 1.2.15.
Надеюсь, что это поможет.
Я создал следующую тестовую программу:
package com.j256.ormlite;
import org.apache.log4j.Logger;
public class Foo {
private static Logger logger = Logger.getLogger(Foo.class);
public static void main(String[] args) {
for (int x = 0; x < 10000000; x++) {
logger.error("goodness this shouldn't be happening to us right here!!!!");
}
}
}
Мой файл log4j.properties хранится:
log4j.appender.MAIN_LOG=org.apache.log4j.RollingFileAppender
log4j.appender.MAIN_LOG.File=${catalina.base}/logs/webtop.log
log4j.appender.MAIN_LOG.layout=com.j256.ormlite.Log4JSimpleLayout
log4j.appender.MAIN_LOG.MaxFileSize=10MB
log4j.appender.MAIN_LOG.MaxBackupIndex=5
log4j.appender.MAIN_LOG.append=true
log4j.rootCategory=ALL, MAIN_LOG
Обратите внимание, что я удалил DatePattern, который недействителен для моего RollingFileAppender. Мой макет:
package com.j256.ormlite;
import org.apache.log4j.spi.LoggingEvent;
public class Log4JSimpleLayout extends org.apache.log4j.Layout {
@Override
public String format(LoggingEvent event) {
return "log message = " + event.getMessage().toString() + "\n";
}
@Override
public boolean ignoresThrowable() {
return true;
}
public void activateOptions() {
}
}
Запуск с -Dcatalina.base=/tmp/
Я получаю файлы в /tmp/logs/
, которые переходят к индексу № 5 и имеют размер 10 МБ. Если я настроил MaxFileSize
или MaxBackupIndex
, он будет соответствующим образом отрегулирован.
Ответ 2
Ваша проблема может заключаться в том, что вы указываете DatePattern.
DatePattern предназначен для использования с DailyRollingFileAppender, чтобы указать дату, которую должен выполнить файл журнала.
Я не думаю, что он может использоваться в сочетании с атрибутами MaxFileSize и MaxBackupIndex.
Log4j позволяет вам копировать файлы на основе размера или даты файла, но не обоих.
Ответ 3
Когда нам нужны ежедневные файлы журналов, мы должны использовать DailyRollingFileAppender вместо RollingFileAppender.
Вам не нужно указывать предел MaxFileSize, а только для DatePattern достаточно скопировать файлы на основе частоты.
Я пробовал приведенную ниже конфигурацию в файле log4j.properties для ежедневной записи файлов журнала.
log4j.appender.infoAppender = org.apache.log4j.DailyRollingFileAppender
log4j.appender.infoAppender.Threshold = INFO
log4j.appender.infoAppender.DatePattern = '' yyyy-MM-dd HH-mm
log4j.appender.infoAppender.File = С:/logs/info.log
Ответ 4
Начните с установки параметра -Dlog4j.debug
JVM. Это печатает несколько полезных строк отладочной информации, показывающей, какой конфигурационный файл он нашел и использует, и т.д. Это должно дать вам некоторые подсказки о том, что происходит не так.
См. http://logging.apache.org/log4j/1.2/manual.html