Нужен рабочий пример настройки log4j RollingFileAppender через свойства - PullRequest
12 голосов
/ 29 сентября 2010

Я использую 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 также будетпрекрасное решение.

Ответы [ 4 ]

17 голосов
/ 29 сентября 2010

Полагаю, я просто неправильно его настроил; у кого-нибудь есть рабочий пример настройки 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, он настроится соответствующим образом.

5 голосов
/ 03 ноября 2010

Возможно, проблема в том, что вы указали DatePattern. DatePattern предназначен для использования с DailyRollingFileAppender для указания даты, в которую должен быть свернут файл журнала. Я не верю, что его можно использовать вместе с атрибутами MaxFileSize и MaxBackupIndex. Log4j позволяет вам катить файлы на основе размера файла или даты, но не обоих.

2 голосов
/ 01 июня 2011

Когда нам нужны ежедневные файлы журналов, мы должны использовать DailyRollingFileAppender вместо RollingFileAppender. Вам не нужно указывать ограничение MaxFileSize, вместо этого достаточно только DatePattern для переключения файлов на основе частоты. Я попробовал приведенную ниже конфигурацию в файле log4j.properties для прокрутки файлов журнала каждую минуту.

log4j.appender.infoAppender = org.apache.log4j.DailyRollingFileAppender

log4j.appender.infoAppender.Threshold = INFO

log4j.appender.infoAppender.DatePattern = '' гггг-мм-дд чч-мм

log4j.appender.infoAppender.File = C: /logs/info.log

0 голосов
/ 24 апреля 2013

Начните с установки параметра -Dlog4j.debug JVM. Это выводит несколько полезных строк отладочной информации, показывающей, какой файл конфигурации он обнаружил и использует и т. Д. Это должно дать вам некоторые подсказки о том, что происходит не так.

См. http://logging.apache.org/log4j/1.2/manual.html

...