Log4j日志打印处理

Posted 程序员技术大联盟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Log4j日志打印处理相关的知识,希望对你有一定的参考价值。

日志是应用软件中不可获取的一部份,特别是微服务流行的今天,很多时候你的服务可能依赖很多的服务,当你想要debug调试一些代码的时候,就涉及很多服务的启动,依赖等,这时候日志就可以帮助我们很容易的定位问题了,一提到日志,我想大家都应该很容易的想到log4j了,今天我们就来聊一聊log4j相关的一些用法和使用技巧等。


应用场景一:在主日志存在的情况下,将部分业务日志单独拎出来一个文件存放,区别debug,info,error等级别。

log4j.rootLogger=DEBUG, Debug, Info, Error
log4j.appender.Debug=org.apache.log4j.RollingFileAppender
log4j.appender.Debug.layout=org.apache.log4j.PatternLayout
log4j.appender.Debug.Append = true
log4j.appender.Debug.MaxFileSize=20MB
log4j.appender.Debug.MaxBackupIndex=5
log4j.appender.Debug.File=debug.log
log4j.appender.Debug,layout.ConversionPattern= [%p] [%d{yyyy-MM-dd HH\:xnm\:ss, SSS}] [%c]%rrl%n
log4j.appender.Debug.Threshold = DEBUG


log4j.appender.Info=org.apache.log4j.RollingFileAppender

log4j.appender.Info.layout=org.apache.log4j.PatternLayout
log4j.appender.Info.Append = true
log4j.appender.Info.MaxFileSize=10MB
log4j.appender.Info.MaxBackupIndex=3
log4j.appender.Info.File=info.log
log4j.appender.Info,layout.ConversionPattern= [%p] [%d{yyyy-MM-dd HH\:inm\:ss, SSS}] [%c]%rrl%n
log4j.appender.Info.Threshold = INFO




log4j.appender.Error=org.apache.log4 j.RollingFileAppender

log4j.appender.Error.layout=org.apache.log4j.PatternLayout
log4j.appender.Error.Append = true
log4j.appender.Error.MaxFileSize=10MB
log4j.appender.Error.MaxBackupIndex=3
log4j.appender.Error.File=error.log
log4j.appender.Error,layout.ConversionPattern= [%p] [%d{yyyy-MM-dd HH\:xnm\:ss, SSS}] [%c]%rrl%n
log4j.appender.Error.Threshold = ERROR



log4j.logger.DemoLogger=DEBUG,DemoDebug,DemoInfo,DemoError

log4j.additivity.DemoLogger= false
log4j.appender.DemoDebug=org.apache.log4j.RollingFileAppender
log4j.appender.DemoDebug.layout=org.apache.log4j.PatternLayout
log4j.appender.DemoDebug.Append = true
log4j.appender.DemoDebug.MaxFileSize=20MB
log4j.appender.DemoDebug.MaxBackupIndex=5
log4j.appender.DemoDebug.File=Demo/debug.log
log4j.appender.DemoDebug.layout.ConversionPattern= [%p][%d{yyyy-MM-dd HH\:xnm\:ss, SSS}] [%c]%rrl%n
log4j.appender.DemoDebug.Threshold = DEBUG



log4j.appender.DemoInfo=org.apache.log4j.RollingFileAppender

log4j.appender.DemoInfo.layout=org.apache.log4j.PatternLayout
log4j.appender.DemoInfo.Append = true
log4j.appender.DemoInfo.MaxFileSize=10MB
log4j.appender.DemoInfo.MaxBackupIndex=3
log4j.appender.DemoInfo.File=Demo/info.log
log4j.appender.DemoInfo.layout.ConversionPattern= [%p] [%d{yyyy-MM-dd HH\:xnm\:ss, SSS}] [%c]%rrl%n
log4j.appender.DemoInfo.Threshold = INFO



log4j.appender.DemoError=org.apache.log4j.RollingFileAppender

log4j.appender.DemoError.layout=org.apache.log4j.PatternLayout
log4j.appender.DemoError.Append = true
log4j.appender.DemoError.MaxFileSize=10MB
log4j.appender.DemoError.MaxBackupIndex=3
log4j.appender.DemoError.File=Demo/error.log
log4j.appender.DemoError.layout.ConversionPattern= [%p] [%d{yyyy-MM-dd HH\:xnm\:ss, SSS}] [%c]%rrl%n
log4j.appender.DemoError.Threshold = ERROR


在类里这样写获取到对应的logger然后通过该logger打印的日志会进入不同的目录(配置的Demo目录下出现info.log debug.log error.log文件),且主日志文件不包含该logger打印的日志。

private static Logger logger = Logger.getLogger("DemoLogger");


// 记录debug级别的信息
logger.debug("This is debug message.");
// 记录info级别的信息
logger.info("This is info message.");
// 记录error级别的信息
logger.error("This is error message.");



应用场景二:将不同包 或者包里不同的类日志打印在不同的地方,在主日志配置不变的情况下可以这样加一段配置,将com.service.DemoService类的日志全部打印在DemoService.log文件里,也可以将某个包里的类全部打印在某个文件中,代码里不用做任何处理。

log4j.logger.com.service.DemoService=info,DemoService
log4j.appender.DemoService=org.apache.log4j.RollingFileAppender
log4j.appender.DemoService.layout=org.apache.log4j.PatternLayout
log4j.appender.DemoService.Append = true
log4j.appender.DemoService.MaxFileSize=10MB
log4j.appender.DemoService.MaxBackupIndex=5
log4j.appender.DemoService.File=DemoService.log
log4j.appender.DemoService.layout.ConversionPattern= [%p] [%d{yyyy-MM-dd HH\:xnm\:ss, SSS}] [%c]%rrl%n
log4j.appender.DemoService.Threshold = INFO



了解更多精彩内容,扫描二维码关注:程序员技术大联盟


本文部分内容来可能源于网络,发布的内容如果侵犯了您的权益,请联系我们尽快删除!



以上是关于Log4j日志打印处理的主要内容,如果未能解决你的问题,请参考以下文章

log4j2+slf4j日志不打印问题

如何将Hibernate生成的SQL语句打印到日志文件

Tomcat日志项目中的log4j日志控制台——我的日志最后到底跑哪去了?

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情

如何将web应用项目中log4j的日志只打印到独立的文件,不打印在Tomcat的catalina.out?

log4j2 异步日志原理及配置