构建项目,加入log4j日志框架
在pom.xml加入以下依赖:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.6</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.6</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
在resource文件夹创建log4j.properties文件
1 log4j.rootLogger = INFO, stdout, logfile
2 #日志输出到控制台
3 log4j.appender.stdout = org.apache.log4j.ConsoleAppender
4 log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
5 log4j.appender.stdout.ConversionLayout = %d [%t] %-5p %c - %m%n
6 #日志输出到文件
7 log4j.appender.logfile = org.apache.log4j.DailyRollingFileAppender
8 log4j.appender.logfile.File = /Users/yulinfeng/Log/log
9 log4j.appender.logfile.maxFileSize=10240KB #日志的最大容量为10M
10 log4j.appender.logfile.Append = true #是否追加写进文件
11 log4j.appender.logfile.Threshold = DEBUG #输出DEBUG级别日志到文件中
12 log4j.appender.logfile.layout = org.apache.log4j.PatternLayout
13 log4j.appender.logfile.layout.ConversionPattern = %d [%t] %-5p %c - %m%n
语法意义
第1行,log4j.rootLogger=INFO, stdout, logfile。这是log4j的根配置,第一个参数表示输出什么级别的日志,后面的参数表示输出的位置,位置可以是控制台,也可以是文件,语法为log4j.rootLogger=[level], appendername……,在这里定义了两个输出位置,名字无所谓取设么,有意义即可。日志级别从高到低分别是:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,log4j建议只使用ERROR、WARN、INFO、DEBUG四个级别,也就是也就是在上面提到过的。
第3、7行就分别指定了stdout和logfile日志的输出位置,log4j一共提供了5个。
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小达到一定大小后产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意位置)
第4行表示日志信息的格式,一共有以下几种。
org.apache.log4j.HTMLLayout(以HTML表格输出)
org.apache.log4j.PatternLayout(灵活的自定义格式输出)
org.apache.log4j.SimpleLayout(简单的格式输出,只包括日志级别和日志信息的字符串)
org.apache.log4j.TTCCLayout(包含线程、日志级别、日志所在类和日志信息的字符串)
通常为了更为灵活的打印日志,我们会选择PatternLayout布局的日志,同时通过ConversionPattern自定义输出格式。
按照上面的配置,我们就可以在代码中进行日志的输出了。由于是在Spring框架下使用log4j,所以就要使用Spring对log4j进行初始化,在web.xml中对log4j进行初始化。
<web-app>
<display-name>log web</display-name>
<context-param>
<param-name>log4jConfigurationLocation</param-name>
<param-value>classpath*:log4j.properties</param-value>
</context-param>
<!--每隔60s扫描log4j的配置文件,这里配置的log4jRefreshInterval参数表示能不用重启web服务器就能动态更改log4j日志级别,这也是和Spring整合的一大好处-->
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
<listener>
<!--从spring4.2.1开始Log4jConfigListener已经被废弃,最好使用log4j2对应的org.apache.logging.log4j.web.Log4jServletContextListener
.Log4jServletContextListener-->
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
</web-app>
此时在代码逻辑中加入以下代码即可根据我们的配置输出系统日志。
private Logger log = Logger.getLogger(Test.class);
log.info(“test info”);