zoukankan      html  css  js  c++  java
  • Spring MVC配置log4j日志(分两个版本4.0.4.RELEASE和5.2.5.RELEASE)

    1.记录Spring版本为4.0.4.RELEASE的日志记录

    本文档初衷是在我想要打印使用Jdbctemplate来打印执行的SQL时想让SQL打印在控制台,并且记录定时记录错误日志,所以才有如下的文章

    所有的错误日志只有在捕获了的情况下才会记录,不然只会抛错误在控制台。如果捕获了错误的话那么是不会阻止程序运行的。

    本次记录的环境配置为Idea+tomcat7,开发web项目

    (1)引入依赖的jar包,使用的是Maven,Spring依赖需要的jar这里就不展示出来了。

    <log4j.version>2.8</log4j.version>
    <dependency>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-core</artifactId>
          <version>${log4j.version}</version>
        </dependency>
        <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>1.2.17</version>
        </dependency>
        <dependency>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-api</artifactId>
          <version>${log4j.version}</version>
        </dependency>
    

    (2)在web.xml文件中,需要配置log4j.properties文件的所在位置,并且配置Log4j的监听器。

      <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>classpath:log4j.properties</param-value>
      </context-param>
      <listener>
        <listener-class>
          org.springframework.web.util.Log4jConfigListener
        </listener-class>
      </listener>
    

    (3)在log4j.properties的文件内容

    log4j.rootLogger =  DEBUG,stdout
    
    log4j.appender.stdout = org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern = [%d][%-5p]:%m %n
    org.springframework.jdbc.core=debug # 打印SQL语句
    org.springframework.jdbc.core.StatementCreatorUtils=trace,file # 打印JdbcTemplate的参数
    

    2.记录Spring版本为5.2.5.RELEASE的日志记录

    这里日志记录是使用的是log4j2

    (1)引入的jar依赖如下。

    <log4j2-version>2.10.0</log4j2-version>
    <dependency>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-core</artifactId>
          <version>${log4j2-version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
        <dependency>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-api</artifactId>
          <version>${log4j2-version}</version>
        </dependency>
    
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-web</artifactId>
            <version>${log4j2-version}</version>
        </dependency>
    

    (2)由于log4j2的很多配置已经由Spring帮你完成了,仅限于Spring高版本。所以在web.xml文件就不再需要log4j2的文件地址。只需要在你的类路径下配置一个log4j2.xml文件就行了。不能使用log4j.properties会导致Spring识别不出来

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="WARN">
        <Appenders>
            <Console name="Console" target="SYSTEM_OUT">
                <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
            </Console>
        </Appenders>
        <Loggers>
            <Root level="error">
                <AppenderRef ref="Console"/>
            </Root>
            <Logger name="org.springframework.jdbc.core" level="debug"/> # 打印Jdbctemplate的SQL
            <Logger name="org.springframework.jdbc.core.StatementCreatorUtils" level="trace"/> # 打印SQL的参数
        </Loggers>
    </Configuration>
    

    (3)至此,在Spring5中配置日志记录就已经完成。仅供个人参考

        %m   输出代码中指定的消息
      %p   输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 
      %r   输出自应用启动到输出该log信息耗费的毫秒数 
      %c   输出所属的类目,通常就是所在类的全名 
      %t   输出产生该日志事件的线程名 
      %n   输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n” 
      %d   输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss ,SSS},输出类似:2002年10月18日  22 : 10 : 28 , 921  
      %l   输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java: 10 ) 
    
    

    比如本人常用的一些格式:
    输出到控制台的信息: [%d][%-5p]:%m %n
    输出到错误文件中的信息: %d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c >> Method: %l ]%n%p:%m%n
    %d{yyyy-MM-dd HH:mm:ss a} 这一段表示2020-05-25 09:26:18 上午
    还有其他的信息展示形式可根据项目需要自行组合。

    log4j配置错误日志信息:

    log4j.rootLogger =  debug,stdout,R
    log4j.appender.R= org.apache.log4j.DailyRollingFileAppender
    # 每分钟打印年-月-日-分
    log4j.appender.R.DatePattern='_'yyyy-MM-dd-HH-mm
    # ${catalina.home} 是指启动服务器的的根路径
    #log4j.appender.R.file= ${catalina.home}/WEB-INF/logs/error.log
    # ${webApp.root} 是指发布到Tomcat后,在webapps/项目名 中的项目路径
    log4j.appender.R.file= ${webApp.root}/WEB-INF/logs/error.log
    # 日志输出级别,这里是指输出ERROR错误级别的日志。
    log4j.appender.R.Threshold= ERROR
    log4j.appender.R.Append= true
    #日志中输出的日志的格式
    log4j.appender.R.layout= org.apache.log4j.PatternLayout
    # 定义的日志格式
    log4j.appender.R.layout.ConversionPattern= %d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c >> Method: %l ]%n%p:%m%n
    
    努力有用的话,还要天才做什么呢?
  • 相关阅读:
    每日日报2021.5.14
    每日日报2021.5.13
    每日日报2021.5.12
    每日日报2021.5.11 冲刺第十天
    《梦断代码》读后感3
    每日日报2021.5.10 冲刺第九天
    《梦断代码》读后感2
    每日日报2021 5/23
    每日日报2021 5/22
    每日日报2021 5/21
  • 原文地址:https://www.cnblogs.com/crazy-xf/p/12937732.html
Copyright © 2011-2022 走看看