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>
作者:冢本八云