log4j配置继承问题

J2EE 码拜 6年前 (2015-04-04) 1144次浏览 0个评论

如何让FLOW日志可以输出到控制台,又不会输出到SYS日志文件里去?我现在是可以不输出到SYS中,但是也不会输出到控制台了。

log4j.rootLogger=INFO,SYS,stdout
log4j.logger.FLOW=DEBUG,FLOW

log4j.additivity.FLOW=false

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Threshold = DEBUG
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%t][%d][%p][%F:%L]%m%n

log4j.appender.SYS=org.apache.log4j.DailyRollingFileAppender
log4j.appender.SYS.Threshold = INFO
log4j.appender.SYS.file=../log/sys.log
log4j.appender.SYS.DatePattern="".""yyyy-MM-dd
log4j.appender.SYS.layout=org.apache.log4j.PatternLayout 
log4j.appender.SYS.layout.ConversionPattern=[%t][%d][%p][%F:%L]%m%n

log4j.appender.FLOW=org.apache.log4j.DailyRollingFileAppender
log4j.appender.FLOW.file=../log/flow.log
log4j.appender.FLOW.layout=org.apache.log4j.PatternLayout 
log4j.appender.FLOW.layout.ConversionPattern=%d|%m%n


log4j配置继承问题
log4j只会最简单的配置,不太方便。
可以试试Logback(Log4J的升级版,同一个人开发的),配置挺简单的,实现你的这个要求也很简单,修改一行配置就能实现。
log4j配置继承问题
40分
log4j.rootLogger=INFO,SYS,stdout  去掉这里的SYS和后面SYS的配置
log4j配置继承问题
你在输出日志的代码那里用的是什么级别?你的FLOW定义为DEBUG级别,那么你企图输出的日志必须大于这个级别才能生效,such as logger.debug() 或者 logger.error()。

log4j配置继承问题
引用 2 楼 tianfang 的回复:

log4j.rootLogger=INFO,SYS,stdout  去掉这里的SYS和后面SYS的配置

谢谢!我知道怎么配了。

log4j.rootLogger=DEBUG,stdout
log4j.logger.SYS=DEBUG,SYS
log4j.logger.FLOW=DEBUG,FLOW

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Threshold = DEBUG
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d][%p][%F:%L]%m%n

log4j.appender.SYS=org.apache.log4j.DailyRollingFileAppender
#log4j.appender.SYS.Threshold = DEBUG
log4j.appender.SYS.file=../log/sys.log
log4j.appender.SYS.DatePattern="".""yyyy-MM-dd
log4j.appender.SYS.layout=org.apache.log4j.PatternLayout 
log4j.appender.SYS.layout.ConversionPattern=[%t][%d][%p][%F:%L]%m%n

log4j.appender.FLOW=org.apache.log4j.DailyRollingFileAppender
log4j.appender.FLOW.file=../log/flow.log
log4j.appender.FLOW.DatePattern="".""yyyy-MM-dd
log4j.appender.FLOW.layout=org.apache.log4j.PatternLayout 
log4j.appender.FLOW.layout.ConversionPattern=%d|%m%n

这样就可以了,Logger.getLogger(ClassNamexxx.class)这样的就只输出控制台,Logger.getLogger(”SYS“)这样的输出控制台又输出日志文件,Logger.getLogger(”FLOW“)也是只输出控制台又输出到flow文件。就是flow,sys共同继承stdout,所以两者的输出也会输出到stdout。如果不想继承父log也可以通过配置log4j.additivity.FLOW=false,这样FLOW日志只会输出到文件,不会输出到终端了。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明log4j配置继承问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!