Springboot使用log4j2日志

1、pom.xml引用依赖

springboot默认是用logback的日志框架的,所以需要排除logback,不然会出现jar依赖冲突的报错

 1         <dependency>
 2             <groupId>org.springframework.boot</groupId>
 3             <artifactId>spring-boot-starter-web</artifactId>
 4             <exclusions>
 5                 <!--排除掉默认的日志配置 spring-boot-starter-xxx下都可排除,已知web和test可-->
 6                 <exclusion>
 7                     <groupId>org.springframework.boot</groupId>
 8                     <artifactId>spring-boot-starter-logging</artifactId>
 9                 </exclusion>
10             </exclusions>
11         </dependency>
12         <dependency>
13             <groupId>org.springframework.boot</groupId>
14             <artifactId>spring-boot-starter-log4j2</artifactId>
15         </dependency>

2、配置文件yml文件和xml配置文件:两个文件均在resources下

application.yml部分配置如下

 1 mybatis-plus:
 2   mapper-locations: classpath:/mapper/**/*.xml 
 3   type-aliases-package: com.xxx.xxx.entity # 注意:对应实体类的路径
 4 
 5 
 6 
 7 
 8 logging:
 9   config: classpath:log4j2.xml
10   level:
11     com.xxx.xxx.dao: DEBUG #这个指定你的dao层,也就是mapper文件的所在包

 

日志的Level:

1、trace (追踪)
2、debug (调试)
3、info (信息)
4、warn (警告)
5、error (错误)
6、fatal (严重错误)

log4j2.xml配置如下:

 

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

参考:https://blog.csdn.net/u012150590/article/details/86601175

https://blog.csdn.net/whl190412/article/details/93487625

https://www.cnblogs.com/suizhikuo/p/15952005.html

posted @ 2022-03-28 21:33  冢本八云  阅读(210)  评论(0编辑  收藏  举报