功能简介
launcher统一了应用的日志路径以及日志格式,并且提供了零配置开箱即用的特性。当用户有个性化日志需求时(例如:把部分特定的日志打印到指定目录上)也可以通过自定义日志片段来满足所述需求。
日志框架配置方式
launcher目前仅支持SpringBoot项目,请使用SpringBoot默认日志框架 org.springframework.boot:spring-boot-starter-logging,大多数情况下已经自带,无需手动配置。
不兼容的依赖
- 仅支持Logback,如果整个依赖树中未找到 ch.qos.logback:logback-classic 会构建失败。
- 如果发现依赖树中包含LOG4J的SLF4J实现 org.apache.logging.log4j:log4j-slf4j-impl 会构建失败。
个性化日志
launcher支持Logback中的File Inclusion特性,能够让用户自定义日志配置片段,以完成用户的个性化日志需求。
配置流程
创建日志配置片段 logback.snippet.xml
- 创建 logback.snippet.xml 放在工程的resources目录下
配置日志片段
- 官方文档:https://logback.qos.ch/manual/configuration.html#fileInclusion
- 该配置文件的根元素为
<included>
- 根元素内部支持
logback.xml
配置文件中的任意元素,例如<appender>
、<logger>
等
场景示例
- 有个名为 DataPointer 的 Logger,现在用户想要将该 Logger 的日志打印到应用日志目录下的 point 子文件夹中。
- 希望将该日志文件名修改为 服务名.point.log ,并且按天以及默认日志大小策略滚动。
日志格式使用启动器的默认格式。
logback.snippet.xml 内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23<included>
<appender name="dataPointAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logDir}/point/${launcher.app.name}.point.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${logDir}/point/${launcher.app.name}.%d{yyyy-MM-dd}.%i.point.log</fileNamePattern>
<maxFileSize>${maxFileSize}</maxFileSize>
<maxHistory>${maxHistory}</maxHistory>
<totalSizeCap>${totalSizeCap}</totalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>${PATTERN}</Pattern>
</encoder>
</appender>
<logger name="DataPointer" level="INFO" additivity="false">
<appender-ref ref="dataPointAppender" />
</logger>
</included>日志片段中可以使用的内部变量
- launcher.app.name: 服务名
- logDir: 应用日志目录,该目录下有许多子文件夹以存放不同类型的日志文件,例如:
biz
、gc
等等 - PATTERN: launcher预设的基于统一日志规范的日志格式,通常使用在
appender
>encoder
>Pattern
元素中 - maxFileSize: 最大文件大小,通常使用在
appender
>rollingPolicy
>maxFileSize
元素中,默认值:500MB - maxHistory: 最多保留日志数量,通常使用在
appender
>rollingPolicy
>maxHistory
元素中,默认值:15 - totalSizeCap: 日志滚动策略的总大小,通常使用在
appender
>rollingPolicy
>totalSizeCap
元素中,默认值:50GB
修改日志配置的其它方式
通过 pom.xml
修改日志相关配置
- 示例场景:某个业务的日志文件需要保留30天(默认是15天)
- launcher支持在
pom.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<plugin>
<groupId>org.gy.framework</groupId>
<artifactId>launcher-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>launcher</goal>
</goals>
<configuration>
<!-- launcher日志相关配置 start -->
<logConf>
<!-- 以数值均为默认值 -->
<!-- 日志根级别 -->
<rootLogLevel>INFO</rootLogLevel>
<!-- 包名为org.gy.framework开头的日志级别 -->
<logName>org.gy.framework</logName>
<logLevel>INFO</logLevel>
<!-- 日志最大文件大小 -->
<maxFileSize>500MB</maxFileSize>
<!-- 最大文件数量 -->
<maxHistory>15</maxHistory>
<!-- 日志总大小 -->
<totalSizeCap>50GB</totalSizeCap>
</logConf>
<!-- launcher日志相关配置 end -->
</configuration>
</execution>
</executions>
</plugin>
通过JVM参数修改日志相关配置
- 示例场景:应用因为某种故障启动不起来,并且应用部署在容器环境无法手动修改配置文件,想打印DEBUG日志但是又不想重新构建镜像。
使用 Spring 支持的 JVM 参数 logging.level
进行配置(推荐)
- 使用 JVM 参数
logging.level.<logger-name>=<level>
进行配置 - 示例: ./launcher.sh start -jo ‘-Dlogging.level.org.springframework.web=DEBUG’
- Spring 官方文档: https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/boot-features-logging.html#boot-features-custom-log-levels
使用 launcher 内建方式配置日志级别(在上述Spring方式不生效时使用此方法进行配置)
- 用户可以在启动应用时通过JVM参数修改应用的
rootLogLevel
以及logLevel
日志级别 - launcher.app.log.name: 自定义
Logger
的开头 - launcher.app.log.level: 自定义
Logger
的级别 - launcher.app.log.level.root: 其它
Logger
- 示例: ./launcher.sh start -jo ‘-Dlauncher.app.log.level.root=WARN’
...
...
00:00
00:00
If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !