log4j - 编程配置

log4j - Programmatical configuration

我正在使用 log4j (1.2.15) 登录我的应用程序,其中我有两个文件附加程序用于两个不同的包(darius.log4j.sql 和 darius.log4j.net)和一个控制台附加程序。它的配置是这样的:

# CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
# FILE A
log4j.appender.A=org.apache.log4j.FileAppender
log4j.appender.A.File=A.log
log4j.appender.A.layout=org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
# FILE B
log4j.appender.B=org.apache.log4j.FileAppender
log4j.appender.B.File=B.log
log4j.appender.B.layout=org.apache.log4j.PatternLayout
log4j.appender.B.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
#
log4j.rootLogger=ERROR, CONSOLE
#
log4j.logger.darius.sql=DEBUG, A
log4j.logger.darius.net=INFO, B

我现在需要的是在出现特定数据组合时以编程方式添加新的文件附加程序。我知道如何定义这个新的文件附加程序(ex C)但是我不知道如何将级别和新的附加程序设置为第三个包:

log4j.logger.darius.ws=INFO, C

其中 C 是第三个文件追加器。

有命中吗?

简单!创建第三个附加程序 (C) 后,为您的命名空间 (darius.ws) 获取一个记录器,为该记录器设置 INFO 级别。最后只需将此 C appender 附加到记录器即可。

FileAppender fileAppender = new FileAppender();
fileAppender.setName("C");
fileAppender.setFile("C.log");
fileAppender.setLayout(new PatternLayout("%d %-5p [%c{1}] %m%n"));
fileAppender.setThreshold(Level.INFO);
fileAppender.setAppend(true);
...
Logger someLogger = Logger.getLogger("darius.ws");
someLogger.setLevel(Level.INFO);
someLogger.addAppender(fileAppender);

此致