“Logback 拆分 Appender”的版本间的差异
跳到导航
跳到搜索
Jihongchang(讨论 | 贡献) (建立内容为“https://www.bilibili.com/video/BV1iJ411H74S?p=29”的新页面) |
Jihongchang(讨论 | 贡献) |
||
第1行: | 第1行: | ||
https://www.bilibili.com/video/BV1iJ411H74S?p=29 | https://www.bilibili.com/video/BV1iJ411H74S?p=29 | ||
+ | |||
+ | === 示例 按照时间和文件大小拆分、归档日志 === | ||
+ | |||
+ | ==== logback.xml ==== | ||
+ | <syntaxhighlight lang="xml"> | ||
+ | <?xml version="1.0" encoding="UTF-8" ?> | ||
+ | <configuration> | ||
+ | <!-- | ||
+ | 配置集中管理属性 | ||
+ | 可以直接该属性的 value 值 | ||
+ | 格式:${name} | ||
+ | --> | ||
+ | <property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n"></property> | ||
+ | <!-- | ||
+ | 日志输出格式: | ||
+ | %-5level 日志级别 | ||
+ | %d{yyyy-MM-dd HH:mm:ss.SSS} 时间 | ||
+ | %c 类的全限定名 | ||
+ | %M 方法名 | ||
+ | %L 行号 | ||
+ | %thread 线程名称 | ||
+ | %m 或者 %msg 为信息 | ||
+ | %n 换行 | ||
+ | --> | ||
+ | <!-- 定义日志文件保存路径属性 --> | ||
+ | <property name="log_dir" value="/logs"></property> | ||
+ | |||
+ | <!-- 控制台日志输出的 appender --> | ||
+ | <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> | ||
+ | <!-- 控制输出流对象 默认 System.out 改为 System.err --> | ||
+ | <target>System.err</target> | ||
+ | <!-- 日志消息格式配置 --> | ||
+ | <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> | ||
+ | <pattern>${pattern}</pattern> | ||
+ | </encoder> | ||
+ | </appender> | ||
+ | |||
+ | <!-- 日志文件输出的 appender --> | ||
+ | <appender name="file" class="ch.qos.logback.core.FileAppender"> | ||
+ | <!-- 日志文件的保存路径 --> | ||
+ | <file>${log_dir}/logback.log</file> | ||
+ | <!-- 日志消息格式配置 --> | ||
+ | <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> | ||
+ | <pattern>${pattern}</pattern> | ||
+ | </encoder> | ||
+ | </appender> | ||
+ | |||
+ | <!-- HTML 格式日志文件输出 --> | ||
+ | <appender name="htmlFile" class="ch.qos.logback.core.FileAppender"> | ||
+ | <!-- 日志文件的保存路径 --> | ||
+ | <file>${log_dir}/logback.html</file> | ||
+ | <!-- HTML 消息格式配置 --> | ||
+ | <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> | ||
+ | <layout class="ch.qos.logback.classic.html.HTMLLayout"> | ||
+ | <pattern>%-5level%d{yyyy-MM-dd HH:mm:ss.SSS}%c%M%L%thread%m</pattern> | ||
+ | </layout> | ||
+ | </encoder> | ||
+ | </appender> | ||
+ | |||
+ | <!-- 日志拆分和归档压缩的 appender 对象 --> | ||
+ | <appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender"> | ||
+ | <!-- 日志文件的保存路径 --> | ||
+ | <file>${log_dir}/rolling_logback.log</file> | ||
+ | <!-- 日志消息格式配置 --> | ||
+ | <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> | ||
+ | <pattern>${pattern}</pattern> | ||
+ | </encoder> | ||
+ | <!-- 指定拆分规则 --> | ||
+ | <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> | ||
+ | <!-- 按照时间和压缩格式声明拆分的文件名 --> | ||
+ | <fileNamePattern>${log_dir}/rolling.%d{yyyy-MM-dd HH-mm-ss}.log%i.gz</fileNamePattern> | ||
+ | <!-- 按照文件大小拆分 --> | ||
+ | <maxFileSize>1MB</maxFileSize> | ||
+ | </rollingPolicy> | ||
+ | </appender> | ||
+ | |||
+ | <!-- root logger 配置 --> | ||
+ | <root level="ALL"> | ||
+ | <!-- <appender-ref ref="console"/>--> | ||
+ | <!-- <appender-ref ref="file"/>--> | ||
+ | <!-- <appender-ref ref="htmlFile"/>--> | ||
+ | <appender-ref ref="rollingFile"/> | ||
+ | </root> | ||
+ | |||
+ | </configuration> | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ==== LogbackTest.java ==== | ||
+ | <syntaxhighlight lang="java"> | ||
+ | import org.junit.Test; | ||
+ | import org.slf4j.Logger; | ||
+ | import org.slf4j.LoggerFactory; | ||
+ | |||
+ | public class LogbackTest { | ||
+ | |||
+ | public static final Logger LOGGER = LoggerFactory.getLogger(LogbackTest.class); | ||
+ | |||
+ | // 快速入门 | ||
+ | @Test | ||
+ | public void test() { | ||
+ | for (int i = 0; i < 10000; i++) { | ||
+ | // 日志输出 | ||
+ | LOGGER.error("error"); | ||
+ | LOGGER.warn("warn"); | ||
+ | LOGGER.info("info"); | ||
+ | LOGGER.debug("debug"); | ||
+ | LOGGER.trace("trace"); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ==== \logs 目录下生成文件 ==== | ||
+ | <syntaxhighlight lang="console"> | ||
+ | rolling.2023-02-27 18-55-11.log0.gz | ||
+ | rolling.2023-02-27 18-55-11.log1.gz | ||
+ | rolling.2023-02-27 18-55-12.log0.gz | ||
+ | rolling.2023-02-27 18-55-12.log1.gz | ||
+ | rolling_logback.log | ||
+ | </syntaxhighlight> |
2023年2月27日 (一) 10:58的最新版本
https://www.bilibili.com/video/BV1iJ411H74S?p=29
示例 按照时间和文件大小拆分、归档日志
logback.xml
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!--
配置集中管理属性
可以直接该属性的 value 值
格式:${name}
-->
<property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n"></property>
<!--
日志输出格式:
%-5level 日志级别
%d{yyyy-MM-dd HH:mm:ss.SSS} 时间
%c 类的全限定名
%M 方法名
%L 行号
%thread 线程名称
%m 或者 %msg 为信息
%n 换行
-->
<!-- 定义日志文件保存路径属性 -->
<property name="log_dir" value="/logs"></property>
<!-- 控制台日志输出的 appender -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!-- 控制输出流对象 默认 System.out 改为 System.err -->
<target>System.err</target>
<!-- 日志消息格式配置 -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${pattern}</pattern>
</encoder>
</appender>
<!-- 日志文件输出的 appender -->
<appender name="file" class="ch.qos.logback.core.FileAppender">
<!-- 日志文件的保存路径 -->
<file>${log_dir}/logback.log</file>
<!-- 日志消息格式配置 -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${pattern}</pattern>
</encoder>
</appender>
<!-- HTML 格式日志文件输出 -->
<appender name="htmlFile" class="ch.qos.logback.core.FileAppender">
<!-- 日志文件的保存路径 -->
<file>${log_dir}/logback.html</file>
<!-- HTML 消息格式配置 -->
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="ch.qos.logback.classic.html.HTMLLayout">
<pattern>%-5level%d{yyyy-MM-dd HH:mm:ss.SSS}%c%M%L%thread%m</pattern>
</layout>
</encoder>
</appender>
<!-- 日志拆分和归档压缩的 appender 对象 -->
<appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 日志文件的保存路径 -->
<file>${log_dir}/rolling_logback.log</file>
<!-- 日志消息格式配置 -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${pattern}</pattern>
</encoder>
<!-- 指定拆分规则 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 按照时间和压缩格式声明拆分的文件名 -->
<fileNamePattern>${log_dir}/rolling.%d{yyyy-MM-dd HH-mm-ss}.log%i.gz</fileNamePattern>
<!-- 按照文件大小拆分 -->
<maxFileSize>1MB</maxFileSize>
</rollingPolicy>
</appender>
<!-- root logger 配置 -->
<root level="ALL">
<!-- <appender-ref ref="console"/>-->
<!-- <appender-ref ref="file"/>-->
<!-- <appender-ref ref="htmlFile"/>-->
<appender-ref ref="rollingFile"/>
</root>
</configuration>
LogbackTest.java
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LogbackTest {
public static final Logger LOGGER = LoggerFactory.getLogger(LogbackTest.class);
// 快速入门
@Test
public void test() {
for (int i = 0; i < 10000; i++) {
// 日志输出
LOGGER.error("error");
LOGGER.warn("warn");
LOGGER.info("info");
LOGGER.debug("debug");
LOGGER.trace("trace");
}
}
}
\logs 目录下生成文件
rolling.2023-02-27 18-55-11.log0.gz
rolling.2023-02-27 18-55-11.log1.gz
rolling.2023-02-27 18-55-12.log0.gz
rolling.2023-02-27 18-55-12.log1.gz
rolling_logback.log