log4j - 按类而不是级别过滤

时间:2011-03-07 08:02:30

标签: log4j

在我的应用程序中,我需要从远程ftp服务器下载3个不同的工件。下载每个工件后,我验证工件。而且,如果有任何验证错误,我需要记录它们

Artifact A =>验证错误A.log

Artifact B的验证错误=> B.log

Artifact C =>验证错误C.log

我的log4j.properties看起来像:

log4j.rootLogger=DEBUG, rollingfile
log4j.logger.artifactALogger=INFO, AppenderA
log4j.logger.artifactBLogger=INFO, AppenderB
log4j.logger.artifactCLogger=INFO, AppenderC

log4j.appender.AppenderA.File=A.log
log4j.appender.AppenderA.MaxFileSize=5000KB
log4j.appender.AppenderA.MaxBackupIndex=1
log4j.appender.AppenderA.layout=org.apache.log4j.PatternLayout
log4j.appender.AppenderA.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

log4j.appender.AppenderB.File=B.log
log4j.appender.AppenderB.MaxFileSize=5000KB
log4j.appender.AppenderB.MaxBackupIndex=1
log4j.appender.AppenderB.layout=org.apache.log4j.PatternLayout
log4j.appender.AppenderB.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

log4j.appender.AppenderC.File=C.log
log4j.appender.AppenderC.MaxFileSize=5000KB
log4j.appender.AppenderC.MaxBackupIndex=1
log4j.appender.AppenderC.layout=org.apache.log4j.PatternLayout
log4j.appender.AppenderC.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

正如您所看到的,每个记录器有1个appender,每个appender的配置完全相同(日志文件的名称除外)...很多重复!在线下,如果我最终要下载更多工件,我需要为每个工件声明另一个记录器和另一个appender。我这样做的事似乎不对。也许,我只是不按照设计使用的方式使用log4j?我目前正在按类而不是按日志级别过滤日志输出。我应该使用更合适的其他日志API吗?

1 个答案:

答案 0 :(得分:0)

我们可以为此目的为log4j创建自定义记录器。我们有一次类似的要求,最终创建了一个自定义记录器。