почему log4j выводит на стандартный вывод? - PullRequest
0 голосов
/ 29 марта 2012

У меня есть следующий файл log4j.properties:

log4j.rootLogger=DEBUG,A1,A2,A3

log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1.Threshold=DEBUG
log4j.appender.A1.File=log.out
log4j.appender.A1.MaxFileSize=100KB
log4j.appender.A1.MaxBackupIndex=1
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%p %d %t %c - %m%n

log4j.appender.A2=org.apache.log4j.RollingFileAppender
log4j.appender.A2.Threshold=WARN
log4j.appender.A2.File=warnings.out
log4j.appender.A2.MaxFileSize=100KB
log4j.appender.A2.MaxBackupIndex=1
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%p %d %t %c - %m%n

log4j.appender.A3=org.apache.log4j.RollingFileAppender
log4j.appender.A3.Threshold=ERROR
log4j.appender.A3.File=errors.out
log4j.appender.A3.MaxFileSize=100KB
log4j.appender.A3.MaxBackupIndex=1
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=%p %d %t %c - %m%n

В моей программе на Java определена следующая переменная:

private Logger logger = Logger.getRootLogger();

static {
    URL url = MyClass.class.getClassLoader().getResource("/log4j.properties");

    if (url == null) {
        // log4j.properties not found in CLASSPATH, revert to console output
        BasicConfigurator.configure();
    }
    else {
        // log4j.properties found
        PropertyConfigurator.configure(url);
    }
}

Почему, когда я вызываю регистраторметоды, вывод также идет на консоль (stdout), в дополнение к 3 выходным файлам?

Ответы [ 2 ]

1 голос
/ 29 марта 2012

Если вы назовете свой файл log4j.properties и поместите его в корень пути к классам, то он будет выбран по умолчанию, вам не нужно передавать его в BasicConfigurator.

В вашем случае, вероятно, происходит то, что загрузчик классов Java не находит там файл (в корне), ваш вызов BasicConfigurator.configure () без параметров заставляет log4j использовать конфигурацию по умолчанию.

Убедитесь, что log4j.properties является корнем пути к классу вашего файла военных действий, т. Е.

WEB-INF\classes\log4j.properties

0 голосов
/ 29 марта 2012

Мне удалось решить проблему, удалив весь статический блок.По какой-то странной причине, BasicConfigurator.configure (), кажется, вызывается ... (хотя генерируются и другие 3 файла)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...