SSM框架下log4j配置说明

一、是什么

Log4J的配置文件用来设置记录器的级别、存放器和布局的,说白了就是一个日志记录工具,可以打印记录一些程序运行、操作的记录。在开发中debug时可以随时查看,非常方便好用。它可以接key=value格式的设置或xml格式的设置信息,有log4j.xml和log4j.peoperties两种配置方式,较常用的是log4j.peoperties方式。

二、配置说明

这里以log4j.properties文件为例,记录一下配置说明,主要也是配置记录器的级别、存放位置、以及格式等。

基本配置流程:

2.1 配置根Logger

2.2 配置日志信息输出目的地Appender及Appender选项 

2.3 配置日志信息的格式(布局)及格式布局选项

三、log4j.properties文件配置

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

 

以上!

文中如有不当、错误、或改进之处等欢迎讨论,一起进步!

你可能感兴趣的:(SSM)