SpringBoot日志详解使用include
一、介绍
前段时间,公司让我整改SpringBoot
日志的配置,我改的老痛苦了。
一共有7
个微服务,其中每一个微服务各自都有4
个这样logback-spring-{active}.xml
文件。
正好我看过SpringBoot
中是怎么写的,给大家截图看下
既然如此,我们也可以通过include
标签来进行编写。
哦对了,SpringBoot
使用的logback
日志,里面的含义代表什么,我就不详细讲了。
具体可以看我的这边文章,SpringBoot日志配置详情 | 半月无霜 (banmoon.top)
二、配置
这边创建两份基础文件,分别是
-
banmoon-logback-defined.xml
:里面定义了一些参数
-
banmoon-logback-append.xml
:里面定义了一些输出
-
banmoon-logback.xml
:将上面的两个文件引入整合,并加上了一些日志等级的配置
看看文件所在的目录,都在scr/main/java
的包内
1)banmoon-logback-defined.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <?xml version="1.0" encoding="UTF-8"?> <included> <springProperty scope="context" name="APPLICATION_NAME" source="spring.application.name"/>
<springProperty scope="context" name="LOG_PATH_SPRING" source="logging.path"/> <if condition='isNull("LOG_PATH_SPRING")'> <then> <property name="LOG_PATH" value="./logs/${APPLICATION_NAME}"/> </then> <else> <property name="LOG_PATH" value="${LOG_PATH_SPRING}"/> </else> </if>
<property name="LOG_FORMAT_ONE" value="%red(%d{yyyy-MM-dd HH:mm:ss.SSS}) %green([%thread]) %blue([%-5level]) %cyan(%logger{36}:%line) %msg%n"/> <property name="LOG_FORMAT_TWO" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%-5level] %logger{36}:%line %msg%n"/>
</included>
|
2)banmoon-logback-append.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| <?xml version="1.0" encoding="UTF-8"?> <included> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <Pattern>${LOG_FORMAT_ONE}</Pattern> <charset>UTF-8</charset> </encoder> </appender>
<appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_PATH}/info.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/info_%i.log</fileNamePattern> <maxFileSize>10MB</maxFileSize> <MaxHistory>5</MaxHistory> </rollingPolicy> <encoder> <pattern>${LOG_FORMAT_TWO}</pattern> <charset>UTF-8</charset> </encoder> </appender>
<appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_PATH}/error.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/error_%i.log</fileNamePattern> <maxFileSize>10MB</maxFileSize> <MaxHistory>5</MaxHistory> </rollingPolicy> <encoder> <pattern>${LOG_FORMAT_TWO}</pattern> <charset>UTF-8</charset> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender>
<root level="INFO"> <appender-ref ref="CONSOLE"/> <appender-ref ref="FILE_INFO"/> <appender-ref ref="FILE_ERROR"/> </root>
<logger name="com.banmoon.**.mapper" level="DEBUG" additivity="false"> <appender-ref ref="CONSOLE"/> <appender-ref ref="FILE_INFO"/> </logger>
</included>
|
3)banmoon-logback.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <?xml version="1.0" encoding="UTF-8"?> <included> <include resource="com/banmoon/logging/banmoon-logback-defined.xml"/>
<include resource="com/banmoon/logging/banmoon-logback-append.xml"/>
<springProfile name="local | dev | test"> <logger name="com.banmoon" level="DEBUG" additivity="false"> <appender-ref ref="CONSOLE"/> <appender-ref ref="FILE_INFO"/> </logger> </springProfile>
<springProfile name="prod"> <logger name="com.banmoon" level="INFO" additivity="false"> <appender-ref ref="CONSOLE"/> <appender-ref ref="FILE_INFO"/> </logger> </springProfile>
</included>
|
4)还有几点要说明的
-
由于我放的位置在scr/main/java
中,注意maven
编译后,文件还存不存在
-
上面这三份文件的root
标签,是included
-
还没有结束,我们要在SpringBoot
项目中用起来,可以这样引入
1 2 3 4
| <?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="30 seconds" debug="false"> <include resource="com/banmoon/logging/banmoon-logback.xml"/> </configuration>
|
-
由于banmoon-logback-defined.xml
中使用了if
标签,请确保引入了下面这个依赖
1 2 3 4
| <dependency> <groupId>org.codehaus.janino</groupId> <artifactId>janino</artifactId> </dependency>
|
上面的设置好了后,我们就可以正常使用了
三、最后
遇到了很多性格的人,但又有什么用呢?
我是半月,你我一同共勉!!!