java将位于同一包层次结构下的2个类的日志消息打印到2个不同的文件中
我在同一个包中有两个Java类。我想将这两个类中的消息记录到两个不同的日志文件中
The log messages should not be repeated in any of these two files.
我使用下面的log4j。属性文件:
# Set root category priority to DEBUG and its appender to CONSOLE and LOGFILE_ENGINE.
log4j.rootCategory=DEBUG, LOGFILE_ENGINE, SYNC_HANDLER
log4j.additivity.LOGFILE_ENGINE = false
log4j.additivity.SYNC_HANDLER = false
log4j.category.org.jboss=ERROR
log4j.category.org.apache.axis=ERROR
log4j.category.org.springframework=ERROR
log4j.category.org.hibernate=ERROR
log4j.category.org.jgroups=ERROR
log4j.category.org.apache.catalina.loader.WebappClassLoader=OFF
log4j.logger.net.sourceforge.stripes=ERROR
log4j.logger.net.sf.ehcache=ERROR
log4j.additivity.org.jboss.cache=false
log4j.logger.org.quartz=ERROR
# LOGFILE_ENGINE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE_ENGINE=org.apache.log4j.RollingFileAppender
log4j.appender.LOGFILE_ENGINE.File=${catalina.home}/logs/file1.log
log4j.appender.LOGFILE_ENGINE.Append=true
log4j.appender.LOGFILE_ENGINE.maxBackupIndex=5
log4j.appender.LOGFILE_ENGINE.maxFileSize=10MB
log4j.appender.LOGFILE_ENGINE.Threshold=INFO
log4j.appender.LOGFILE_ENGINE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE_ENGINE.layout.ConversionPattern=%d{MMM dd, yyyy hh:mm:ss.SSS a} %-5p %c - %m%n
log4j.appender.SYNC_HANDLER=org.apache.log4j.RollingFileAppender
log4j.appender.SYNC_HANDLER.File=${catalina.home}/logs/file2.log
log4j.appender.SYNC_HANDLER.Append=true
log4j.appender.SYNC_HANDLER.maxBackupIndex=5
log4j.appender.SYNC_HANDLER.maxFileSize=10MB
log4j.appender.SYNC_HANDLER.Threshold=DISASTER#PackageName.className
log4j.appender.SYNC_HANDLER.layout=org.apache.log4j.PatternLayout
log4j.appender.SYNC_HANDLER.layout.ConversionPattern=%d{MMM dd, yyyy hh:mm:ss.SSS a} %-5p %c - %m%n
DISASTER#PackageName.className
是我通过扩展org.apache.log4j
的Level
类而创建的自定义级别
我的问题1记录来自文件2的消息。日志正在文件1中重复。日志文件
2是否可以通过log4j进行基于类的日志记录
不用说我对Log4j
很幼稚
# 1 楼答案
您要查找的内容如下:
这意味着您可以在记录器中使用类名。希望这有帮助
# 2 楼答案
我找到了解决我问题的方法。
我为我的类创建了一个自定义日志级别,希望为其创建单独的日志。
我尝试了以下log4j配置:
我创建了记录器引用,如下所示:
下面是用于创建自定义级别(灾难)的自定义级别类(SyncLogLevel):
在此之后,您必须按如下方式在所需的类中进行日志记录:
最后,从syncLogger调用的日志级别为“灾难”的所有日志消息都将转到一个单独的文件(file2.log)
完成所有这些操作后,我的所有日志将分别放入所需的文件中