Log4J的配置文件用来设置记录器的级别、存放器和布局的,说白了就是一个日志记录工具,可以打印记录一些程序运行、操作的记录。在开发中debug时可以随时查看,非常方便好用。它可以接key=value格式的设置或xml格式的设置信息,有log4j.xml和log4j.peoperties两种配置方式,较常用的是log4j.peoperties方式。
这里以log4j.properties文件为例,记录一下配置说明,主要也是配置记录器的级别、存放位置、以及格式等。
基本配置流程:
2.1 配置根Logger
2.2 配置日志信息输出目的地Appender及Appender选项
2.3 配置日志信息的格式(布局)及格式布局选项
3.1 配置根Logger
log4j.rootLogger = [ level ] , appenderName , appenderName1 , …
说明:
level:日志输出级别,可选 FATAL、ERROR、WARN、INFO、DEBUG五种级别
appenderName 是日志输出地的名字,可自定义,可配置多个输出位置,逗号隔开
注解是在每行开头使用 #
#配置三个日志记录器,级别为debug(最低级),名字依次为C、D、F
log4j.rootLogger = debug , C , D , F
3.2 配置日志信息输出目的地Appender及Appender选项
Appender共有五种:
org.apache.log4j.ConsoleAppender - - - - 输出到控制台
org.apache.log4j.FileAppender - - - - 输出到文件
org.apache.log4j.DailyRollingFileAppender - - - - 每天输出产生一个日志文件
org.apache.log4j.RollingFileAppender - - - - 文件到达指定大小时输出产生一个新文件
org.apache.log4j.WriterAppender - - - - 将日志以流格式发送到任意指定的地方
Appender选项这里不多介绍了,用的也不多,想了解的可以自己查。最常见的就是下面几个:
#控制台日志,打印为out格式,默认为out格式,可指定为err格式
log4j.appender.C.Target=System.out
#文件类可指定文件名(路径)、大小、输出最低层次等
log4j.appender.F.File = logs/ssm.log
log4j.appender.F.MaxFileSize = 10MB
log4j.appender.F.Threshold = ALL
3.3 配置日志信息的格式(布局)及格式布局选项
布局格式共有四种:
org.apache.log4j.HTMLLayout - - - - 以HTML表格形式布局
org.apache.log4j.PatternLayout - - - - 灵活地指定布局模式 / 最常用
org.apache.log4j.SimpleLayout - - - - 包含日志信息的级别和信息字符串
org.apache.log4j.TTCCLayout - - - - 包含日志产生的时间、线程、类别等等信息
最常用的就是org.apache.log4j.PatternLayout 啦,因为可以按照我们想要的形式输出格式,Log4J采用类似Java语言中的printf函数的打印格式格式化日志信息,常见打印参数如下:
%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
%d: 输出日志日期或时间,默认格式为ISO8601,可指定格式如:%d{yyyy MM dd HH:mm:ss,SSS},输出类似:2019年6月7日 22:16:35,932
%r: 输出自应用启动到输出该log信息耗费的毫秒数
%c: 输出日志信息所属的类目,通常就是所在类的全名
%t: 输出产生该日志事件的线程名
%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及行数。
举例:Testlog4.main(TestLog4.java:10)%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
%F: 输出日志消息产生时所在的文件名称
%L: 输出代码中的行号
%m: 输出代码中指定的消息,产生的日志具体信息
%M 输出日志发生的方法名
%n: 输出一个回车换行符,Windows平台为”\r\n”,Unix平台为”\n”输出日志信息换行
说这么多也不如看一段工程中用过的配置。这里看一段log4j.properties配置代码,加强理解,看看具体怎么用。
#log4j.properties
log4j.rootLogger=DEBUG,Console,File
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n
log4j.appender.File = org.apache.log4j.RollingFileAppender
log4j.appender.File.File = logs/ssm.log
log4j.appender.File.MaxFileSize = 10MB
log4j.appender.File.Threshold = ALL
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n
以上!
文中如有不当、错误、或改进之处等欢迎讨论,一起进步!