Java中日志的处理

日志是程序运行过程的信息,其数据能够帮助开发人员提前发现并避开异常,在错误发生后能够找到事件的起因,并纠正错误,达到预期的运行效果。在java开发中,日志系统是java项目中必不可少的组成部分。日志可以帮助我们快速的定位问题,记录程序运行过程中的情况,以便项目的监控和优化。我们在日常开发中主要使用的java日志框架组件有:log4j、SLF4J、logback、Commons Logging、log4j2等。

slf4j,即简单日志门面(Simple Logging Facade for JAVA),不是具体的日志解决方案,它只服务于各种各样的日志系统。一般来说,slf4j配合log4j、logback进行使用,可以理解为slf4j是标准,log4j和logback是实现。官方推荐使用logback作为日志系统,因为logback有更快执行速度,logback-classic 也实现了slf4j。

日志的管理分为两大部分:

    日志记录器 日志处理器

日志记录器负责按设定级别对日志进行记录和向上传递, 日志处理器负责按设定级别对日志进行打印。

日志级别一般分为7个打印级别(不同的日志框架组件可能打印的日志级别区别不大): OFF-关闭所有日志; FATAL-记录严重的错误,并且会导致应用程序退出; ERROR-记录严重的错误,但不会影响程序的运行; WARN-记录警告; INFO-记录程序中比较有意义的信息; DEBUG-记录程序中的细节信息; ALL-记录所有的日志;

以log4j为例,log4j建议使用的日志信息优先级由高至低分别是error、warn、info、debug。日志信息可以输出到控制台、文件或者图形组件。使用FileAppender可以将日志信息输到文件中,文件太大(日志内容过多)时导致读取不方便,可以使用DailyRollingFileAppender,将log信息输到按照日期分区的多个文件中,即每天产生一个log文件,每个log文件只记录当天的信息。

log4j可以同时设置多个日志输出源,在log4j.properties配置文件中可指定同时在控制台和文件中输出日志信息。也可以将日志信息存放到数据库中。

 
log4j.rootLogger=warn,myconsole,errinfo #输出到控制台的日志 log4j.appender.myconsole=org.apache.log4j.ConsoleAppender log4j.appender.myconsole.layout=org.apache.log4j.PatternLayout #log4j.appender.myconsole.Threshold=warn log4j.appender.myconsole.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p [%t] (%F:%L) - %m%n #输出到文件的异常日志文件 log4j.appender.errinfo=org.apache.log4j.FileAppender log4j.appender.errinfo.File=D:/ERROR.LOG log4j.appender.errinfo.Threshold =ERROR log4j.appender.errinfo.layout=org.apache.log4j.PatternLayout log4j.appender.errinfo.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p [%t] (%F:%L) - %m%n
经验分享 程序员 微信小程序 职场和发展