Log4j记录到多个文件

在我的Java控制台应用程序中,我想将某些事件记录到日志文件中,而某些其他事件则记录到控制台。 这就是我现在所拥有的

log4j.rootLogger=error, 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{ABSOLUTE} %5p %c{1}:%L - %m%n log4j.appender.L1=org.apache.log4j.FileAppender log4j.appender.L1.layout=org.apache.log4j.PatternLayout log4j.appender.L1.layout.ConversionPattern=%-22d{dd/MMM/yyyy HH:mm:ss} – %m%n log4j.appender.L1.file=failedtoaddusers.log 

在我的Java应用程序中,我使用实例化两个日志实例

 private static Logger log = Logger.getLogger(ActiveDirectoryManage.class); private static Logger failedToAddUsersLogger = Logger.getLogger("FailedToAddUsersLogging"); 

我的问题是,除了日志文件failedToAddUsersLogger.warn("xyz")failedToAddUsersLogger.warn("xyz")也会写入控制台。 我只是想让它写入日志文件而不是控制台。 我该如何做到这一点?

您需要将additivity设置为“false”(在log4j手册的Appenders和Layouts部分中阅读有关logger additivity的更多信息):

 log4j.additivity.FailedToAddUsersLogging=false log4j.logger.FailedToAddUsersLogging = your level, L1 

此外,请确保您有一个新版本的log4j,“additivity”设置从一开始就不可用。