在 Spring boot 可以使用 Logback 进行配置,系统预设加载日志配置档案
为自己的环境配置有两种方法,如果只是简单的更改,则可以把属性添加到 application.properties
等配置属性档案中,或者对於更复杂的需求,可以使用 XML
或 Groovy
来指定设置。
在 Maven 环境中我们添加以下属性
<!-- 整合 fluent -->
<dependency>
<groupId>org.fluentd</groupId>
<artifactId>fluent-logger</artifactId>
<version>0.3.4</version>
</dependency>
<!-- 主要是这个 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<!-- send to flunted -->
<dependency>
<groupId>com.sndyuk</groupId>
<artifactId>logback-more-appenders</artifactId>
<version>1.8.0</version>
</dependency>
<!-- 配置 Json -->
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>6.6</version>
</dependency>
logback-classic
包含 logback-core
依赖关系,他们之间有着我们可以配置的属性。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
%d{dd-MM-yyyy HH:mm:ss.SSS} %magenta([%thread]) %highlight(%-5level) %logger{36}.%M - %msg%n
</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
建立一个 ConsoleAppender
的类,相似於 System.out.print
打印数据一样。该配置设置了日志输出的格式,这些表示方式根据已发送到记录器的讯息替换为生成的值。该格式含有一些符号,如下说明
如果要在与根级别不同的级别上记录该 class 的讯息,则可以为该 class 定义自己的记录器。如下
<logger name="com.xxx.service.MyServiceImpl" additivity="false" level="DEBUG">
<appender-ref ref="STDOUT" /> <!-- 参照前面所定义的日志格式 -->
</logger>
不使用 additivity=false
将导致讯息被打印两次,原因是根日志附加程序和类级别附加程序都写入日志。
配置将日志写入档案
<springProfile name="file">
<property name="logPath" value="/var/log"/>
<appender name="fileInfoLog" filePermissions="rw-r--r--" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers class="net.logstash.logback.composite.loggingevent.LoggingEventJsonProviders">
<pattern>
<pattern>
{
"timestamp": "%date{ISO8601}",
"level": "%level",
"application": "${springAppName:-}",
"trace": "%X{trace_id:-}",
"span": "%X{span_id:-}",
"trace_flags": "%X{trace_flags:-}",
"pid": "${PID:-}",
"thread": "%thread",
"class": "%logger{40}",
"message": "%message"
}
</pattern>
</pattern>
</providers>
</encoder>
<!--滚动策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--路径-->
<fileNamePattern>${logPath}/info.%d{dd-MM-yyyy}_%i.log</fileNamePattern>
<maxHistory>7</maxHistory>
<maxFileSize>10MB</maxFileSize>
<totalSizeCap>100MB</totalSizeCap>
</rollingPolicy>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="fileInfoLog" />
</root>
</springProfile>
<springProfile name="staging">
...
</springProfile>
<springProfile name="dev">
...
</springProfile>
<springProfile name="!prod">
...
</springProfile>
<<: 新新新手阅读 Angular 文件 - ngClass - Day15
#取得Query String #取得URL的Query String https://127.0....
昨天提到 TeamCity 支援几个不同的通知频道,可以在建置任务成功或失败的时候通知我们。不过现在...
range golang 的 template 支援 range 循环来遍历 map、slice 内...
前言 昨天我们使用预训练模型EfficientNet去提取一张表情的高阶特徵图(1280张特徵图),...
缘由: UIUX提出一个新功能,要在按钮上加上倒数秒数,这个功能算是常见,但开始动手作完了之後,问题...