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
努力有用的话,还要天才做什么呢?
原文地址:https://www.cnblogs.com/crazy-xf/p/12937732.html