Log4j不会创建审核日志文件

时间:2015-04-12 00:45:42

标签: java logging log4j audit-logging

我想跟踪审核日志以分隔文件audit.log

我有log4j的以下配置

# Root logger option
log4j.rootLogger=INFO, stdout

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Audit logs
log4j.appender.A2=org.apache.log4j.FileAppender
log4j.appender.A2.File=/home/michal/audit.log
log4j.appender.A2.Append=true
log4j.appender.A2.encoding=UTF-8
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} - AUDIT - %m%n

在我的代码中我正在调用

private static final Logger logger = Logger.getLogger("A2");
logger.info("audit test");

但是未创建审核日志文件。当我将A2级别放到rootLogger时,会创建该文件,但它已满了来自stdout目标的日志。

1 个答案:

答案 0 :(得分:1)

A2是追加者而不是记录器。您需要在log4j配置中添加一行以定义写入 appender logger ,然后您可以在java代码中写入。

在您的配置中

log4j.logger.audit=INFO, A2

和你的java代码

private static final Logger logger = Logger.getLogger("audit");