springboot整合log4j2

Posted hedecai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot整合log4j2相关的知识,希望对你有一定的参考价值。

1,找到第一个启动类,排除logging

1 <exclusions><!-- 去掉springboot默认配置 -->
2        <exclusion>
3             <groupId>org.springframework.boot</groupId>
4             <artifactId>spring-boot-starter-logging</artifactId>
5      </exclusion>
6  </exclusions>

 2,添加log4j2依赖

 <!-- log4j2. -->
 <dependency> <!-- 引入log4j2依赖 -->
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-log4j2</artifactId>
 </dependency>

3,添加log4j2-spring.xml

1 <?xml version="1.0" encoding="UTF-8"?>
  2 <!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出 -->
  3 <!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数 -->
  4 <configuration monitorInterval="5">
  5     <!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
  6 
  7     <!--变量配置 -->
  8     <Properties>
  9         <!-- 格式化输出:%date表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符 -->
 10         <!-- %logger{36} 表示 Logger 名字最长36个字符 -->
 11         <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p - %F:%L - %m%n" />
 12         <!-- 定义日志存储的路径,不要配置相对路径 -->
 13         <property name="FILE_PATH" value="./logs" />
 14         <property name="FILE_NAME" value="cms" />
 15     </Properties>
 16 
 17     <appenders>
 18 
 19         <console name="Console" target="SYSTEM_OUT">
 20             <!--输出日志的格式 -->
 21             <PatternLayout pattern="${LOG_PATTERN}" />
 22             <!--控制台只输出level及其以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
 23             <ThresholdFilter level="DEBUG" onMatch="ACCEPT"
 24                 onMismatch="DENY" />
 25         </console>
 26 
 27         <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,适合临时测试用 -->
 28         <File name="Filelog" fileName="${FILE_PATH}/test.log" append="false">
 29             <PatternLayout pattern="${LOG_PATTERN}" />
 30         </File>
 31 
 32         <!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 -->
 33         <RollingFile name="RollingFileInfo"
 34             fileName="${FILE_PATH}/info.log"
 35             filePattern="${FILE_PATH}/${FILE_NAME}-INFO-%d{yyyy-MM-dd}_%i.log.gz">
 36             <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
 37             <ThresholdFilter level="info" onMatch="ACCEPT"
 38                 onMismatch="DENY" />
 39             <PatternLayout pattern="${LOG_PATTERN}" />
 40             <Policies>
 41                 <!--interval属性用来指定多久滚动一次,默认是1 hour -->
 42                 <TimeBasedTriggeringPolicy interval="1" />
 43                 <SizeBasedTriggeringPolicy size="10MB" />
 44             </Policies>
 45             <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖 -->
 46             <DefaultRolloverStrategy max="15" />
 47         </RollingFile>
 48 
 49         <!-- 这个会打印出所有的warn及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 -->
 50         <RollingFile name="RollingFileWarn"
 51             fileName="${FILE_PATH}/warn.log"
 52             filePattern="${FILE_PATH}/${FILE_NAME}-WARN-%d{yyyy-MM-dd}_%i.log.gz">
 53             <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
 54             <ThresholdFilter level="warn" onMatch="ACCEPT"
 55                 onMismatch="DENY" />
 56             <PatternLayout pattern="${LOG_PATTERN}" />
 57             <Policies>
 58                 <!--interval属性用来指定多久滚动一次,默认是1 hour -->
 59                 <TimeBasedTriggeringPolicy interval="1" />
 60                 <SizeBasedTriggeringPolicy size="10MB" />
 61             </Policies>
 62             <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖 -->
 63             <DefaultRolloverStrategy max="15" />
 64         </RollingFile>
 65 
 66         <!-- 这个会打印出所有的error及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 -->
 67         <RollingFile name="RollingFileError"
 68             fileName="${FILE_PATH}/error.log"
 69             filePattern="${FILE_PATH}/${FILE_NAME}-ERROR-%d{yyyy-MM-dd}_%i.log.gz">
 70             <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
 71             <ThresholdFilter level="error" onMatch="ACCEPT"
 72                 onMismatch="DENY" />
 73             <PatternLayout pattern="${LOG_PATTERN}" />
 74             <Policies>
 75                 <!--interval属性用来指定多久滚动一次,默认是1 hour -->
 76                 <TimeBasedTriggeringPolicy interval="1" />
 77                 <SizeBasedTriggeringPolicy size="10MB" />
 78             </Policies>
 79             <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖 -->
 80             <DefaultRolloverStrategy max="15" />
 81         </RollingFile>
 82 
 83     </appenders>
 84 
 85     <!--Logger节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等。 -->
 86     <!--然后定义loggers,只有定义了logger并引入的appender,appender才会生效 -->
 87     <loggers>
 88 
 89         <!--过滤掉spring和mybatis的一些无用的DEBUG信息 -->
 90         <logger name="org.mybatis" level="info" additivity="false">
 91             <AppenderRef ref="Console" />
 92         </logger>
 93         <!--监控系统信息 -->
 94         <!--若是additivity设为false,则 子Logger 只会在自己的appender里输出,而不会在 父Logger 的appender里输出。 -->
 95         <Logger name="org.springframework" level="info"
 96             additivity="false">
 97             <AppenderRef ref="Console" />
 98         </Logger>
 99 
100         <root level="info">
101             <appender-ref ref="Console" />
102             <appender-ref ref="Filelog" />
103             <appender-ref ref="RollingFileInfo" />
104             <appender-ref ref="RollingFileWarn" />
105             <appender-ref ref="RollingFileError" />
106         </root>
107     </loggers>
108 </configuration>

  

以上是关于springboot整合log4j2的主要内容,如果未能解决你的问题,请参考以下文章

springboot整合log4j2日志框架

SpringBoot整合log4j2导入新的依赖出现jar冲突解决

spring boot 1.5.4 整合log4j2

第十一节:Springboot整合log4j2日志

全栈编程系列SpringBoot整合Shiro(含KickoutSessionControlFilter并发在线人数控制以及不生效问题配置启动异常No SecurityManager...)(代码片段

spring boot整合Log4j2