несколько несвязанных файлов журнала с log4j и общим журналом - PullRequest
3 голосов
/ 09 февраля 2011

Я хочу, чтобы в моем приложении было 4 файла журнала. Три файла журнала - это типичные журналы log4j Info, Warn и Error. Четвёртый файл журнала совершенно не связан и используется для регистрации некоторых данных.

Мой файл log4j.properties выглядит так:

log4j.threshold=ALL
log4j.rootLogger=ALL, InfoAppender, WarnAppender, ErrorAppender
log4j.DATA_LOGGER=INFO, DataAppender
log4j.additivity.DATA_LOGGER = false

log4j.appender.DataAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DataAppender.File=/app_logs/data.log

log4j.appender.InfoAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.InfoAppender.File=/app_logs/info.log

log4j.appender.WarnAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.WarnAppender.File=/app_logs/warn.log

log4j.appender.ErrorAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ErrorAppender.File=/app_logs/error.log

И мой Java-код выглядит так:

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

private static final Log LOG = LogFactory.getLog(SomeClassInMyApp.class);
private static final Log DATA_LOG = LogFactory.getLog("DATA_LOGGER");

private static void foo() {
    LOG.info("Hello");
    DATA_LOG.info("Some data");
}

Когда я запускаю это, текст "Hello" корректно записывается в файл info.log. Но файл data.log никогда не создается и не записывается.

Почему строка DATA_LOG.info ("Некоторые данные") не записывает данные в файл data.log, и какое изменение кода мне нужно сделать, чтобы это произошло?

1 Ответ

2 голосов
/ 09 февраля 2011

commons должно работать, вы можете попробовать это

   import org.apache.log4j.Logger;
   ...
   ...
   Logger log = Logger.getLogger("DATA_LOGGER");
   ...
   ...
   log.info("my data");

вместо этого

   import org.apache.commons.logging.Log;

Обновление Только что протестировал этот кодработы:

log4j.properties

log4j.rootLogger = DEBUG, R

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=E:/testroot.log

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{DATE} %-5p %c:%L %x - %m%n


##########################################################################
################## Appender for Other Logger  ############################
##########################################################################
log4j.logger.TestLog=DEBUG, cache
log4j.additivity.TestLog=false

log4j.appender.cache=org.apache.log4j.DailyRollingFileAppender
log4j.appender.cache.File=E:/testcache.log
log4j.appender.cache.layout=org.apache.log4j.PatternLayout
log4j.appender.cache.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss} %c %m%n

Test Code

private static final Logger DATA_LOG = Logger.getLogger("TestLog");
private static final Logger LOG = Logger.getLogger(Test.class);

public static final void main(String[] args){
    LOG.error("MSG1");
    DATA_LOG.error("MSG2");
}

Output

testroot.log
09 Feb 2011 12:18:29,671 ERROR in.naishe.so.Test:11  - MSG1

testcache.log
09/02/2011 12:18:29 TestLog MSG2

Вы что-то упустили?

...