Spring 中集成log4j日志框架

构建项目,加入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”);

转自http://www.cnblogs.com/yulinfeng/p/7689388.html

猜你喜欢

转载自blog.csdn.net/HZMand1/article/details/78293520
今日推荐