我正在尝试在不同的文件中写入日志。我希望能够从不同的方法写入不同的文件。假设方法A中存在异常,它在文件A中写入...如果方法B中存在异常,则在文件B中写入。我在谷歌上阅读帮助,但它们都建议调试,跟踪等等级别。我的消息都是错误消息,只是方法不同。我正在使用log4j的属性文件。这就是它的样子:
log4j.rootLogger=ERROR, ROOT
log4j.appender.ROOT=org.apache.log4j.RollingFileAppender
log4j.appender.ROOT.File=(**my_path**)\EmailIntegration.log
log4j.appender.ROOT.MaxFileSize=1000KB
log4j.appender.ROOT.MaxBackupIndex=5
log4j.appender.ROOT.layout=org.apache.log4j.PatternLayout
log4j.appender.ROOT.layout.ConversionPattern=[%d] %t %c %-5p - %m%n
log4j.logger.com.webage.ejbs=INFO
答案 0 :(得分:3)
log4j.rootLogger
。示例(我的根记录器是stdout
,infoout
,debugout
,errorout
)。
#---This is the configuration file for Log4J---
log4j.threshold=ALL
log4j.rootLogger=ALL, stdout, infoout, debugout, errorout
然后我定义了每个记录器(例如infoout
)
#--Log settings for infoout
log4j.appender.infoout=org.apache.log4j.RollingFileAppender
log4j.appender.infoout.file=C:/Logs/Music4Point0.info.log
log4j.appender.infoout.MaxFileSize=10240KB
log4j.appender.infoout.MaxBackupIndex=10
log4j.appender.infoout.layout=org.apache.log4j.PatternLayout
log4j.appender.infoout.layout.ConversionPattern=%d{dd-MMM-yyy HH:mm:ss,SSS} [%t] %-5p %c - %m%n
log4j.appender.infoout.Threshold=INFO
现在,我说所有org.hibernate.*
类都必须记录到DEBUG
阈值和infoout
记录器。
log4j.logger.org.hibernate=DEBUG, infoout
log4j.additivity.org.hibernate=false
这就是你如何配置log4J来设置自定义日志记录。
答案 1 :(得分:1)
log4j中最好的控制级别是在类级别。无论如何,你有两个选择:
第一个选项,最简单的选项,是为每个方法定义特殊记录器:
log4j.logger.LoggerForMethodA=ERRROR, APPENDERFORMETHODA
log4j.logger.LoggerForMethodB=ERRROR, APPENDERFORMETHODB
在你的课堂上,在你的方法上使用适当的记录器。
第二个选项,功能强大的选项,是切换到xml配置格式,您可以在其中为每个appender定义过滤器,我认为这是您的最佳选择。查看有关XML配置格式的the explanation和how to use filters in log4j。这样,您为每个文件定义一个appender,并使用过滤器来保证异常转到正确的文件。 另请查看Filter,Logging Event和LocationInfo
的javadoc