pull/4/head
zhouyu 9 months ago
parent 9cb349dd57
commit 8433973374

@ -1,33 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- 整个 logback 配置的根元素,所有的日志配置都在此元素内进行定义,遵循 logback 的 XML 配置规范 -->
<configuration>
<!-- 定义一个名为 LOG_HOME 的属性,其值为 "/logs/shipping/",这个属性可以在后续配置中被引用,
通常用于指定日志文件的存储路径等相关设置,方便统一管理日志文件的存放位置,若后续需要修改日志文件存储位置,
只需更改此处属性值即可,无需在多处配置中逐个修改 -->
<property name="LOG_HOME" value="/logs/shipping/" />
<!-- 配置名为 "Console" 的日志输出组件Appender类型是 ch.qos.logback.core.ConsoleAppender
作用是将日志信息输出到控制台,常用于开发阶段方便查看实时日志,便于调试代码 -->
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<!-- 编码器Encoder配置用于定义日志输出到控制台的格式 -->
<encoder>
<!-- 具体的日志格式定义,各部分含义如下:
%d{H:mm}:表示输出日期时间,精确到小时和分钟;
%-5level输出日志级别占 5 个字符宽度且左对齐;
[%logger{16}]:输出日志记录器的名称,最长显示 16 个字符;
%msg输出日志消息的具体内容
%n换行符用于使每条日志信息换行显示提高可读性 -->
<pattern>%d{H:mm} %-5level [%logger{16}] %msg%n</pattern>
</encoder>
</appender>
<!-- 配置名为 "normalLog" 的日志输出组件,类型为 ch.qos.logback.core.rolling.RollingFileAppender
它用于将日志输出到文件,并支持按照一定规则对日志文件进行滚动管理(如按时间、大小等进行切割、备份等操作) -->
<appender name="normalLog"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 滚动策略配置这里采用基于时间的滚动策略TimeBasedRollingPolicy
按照日期来对日志文件进行切割和管理,方便按天、月等时间周期查看不同时间段的日志记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 定义日志文件的命名模式,会在 LOG_HOME 所指定的路径下生成类似 web.normal.2024-12-17.log 这样的文件(以实际日期为准),
每天都会生成一个新的日志文件,便于对日志进行分类存储和查看 -->
<FileNamePattern>${LOG_HOME}/web.normal.%d{yyyy-MM-dd}.log
</FileNamePattern>
<!-- 设置保留的历史日志文件数量,这里规定最多保留 30 天的日志文件,超过这个数量的旧日志文件会被自动删除,
避免日志文件过多占用大量磁盘空间 -->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<!-- 触发滚动的策略配置这里采用基于文件大小的触发策略SizeBasedTriggeringPolicy
当单个日志文件大小达到 10MB 时,就会触发滚动操作,比如进行日志文件的切割、备份等处理,
结合前面的时间滚动策略,从时间和文件大小两个维度来合理管理日志文件 -->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>10MB</maxFileSize>
</triggeringPolicy>
<!-- 日志布局Layout配置用于定义日志在文件中的具体输出格式 -->
<layout class="ch.qos.logback.classic.PatternLayout">
<!-- 具体的日志格式,各部分含义如下:
%d{HH:mm:ss.SSS}:输出日期时间,精确到小时、分钟、秒以及毫秒;
[%thread]:输出产生该日志的线程名称;
%-5level输出日志级别占 5 个字符宽度且左对齐;
%logger{16}:输出日志记录器的名称,最长显示 16 个字符;
-:一个连接符,用于分隔日志记录器名称和日志消息内容;
%msg输出日志消息的具体内容
%n换行符使每条日志信息换行显示 -->
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{16} - %msg%n
</pattern>
</layout>
<!-- 配置一个过滤器LevelFilter用于根据日志级别来决定是否允许该日志输出到这个 Appender 对应的日志文件中 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 指定要过滤的日志级别为 ERROR -->
<level>ERROR</level>
<!-- 如果日志级别匹配(即当前日志是 ERROR 级别),则拒绝该日志输出,也就是不会将 ERROR 级别的日志记录到这个 normalLog 对应的日志文件中 -->
<onMatch>DENY</onMatch>
<!-- 如果日志级别不匹配(即不是 ERROR 级别),则接受该日志输出,允许非 ERROR 级别的日志正常记录到该日志文件中 -->
<onMismatch>ACCEPT</onMismatch>
</filter>
</appender>
<!-- 配置名为 "errorLog" 的日志输出组件,同样是基于滚动文件的方式将日志输出到文件,结构和前面的 "normalLog" 类似,
但在日志级别过滤方面有所不同,主要用于专门记录 ERROR 级别的日志 -->
<appender name="errorLog"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
@ -44,18 +84,23 @@
</layout>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<!-- 对于 ERROR 级别的日志,这里设置为接受输出,即只有 ERROR 级别的日志会被记录到这个 errorLog 对应的日志文件中 -->
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 配置一个名为 "com.oursnail" 的日志记录器Logger指定其日志级别为 debug
意味着这个记录器会记录 DEBUG 及以上级别的日志信息,并且将这些日志输出到 "normalLog" 和 "errorLog" 这两个 Appender 对应的日志文件中,
通过这种方式可以针对特定的包(这里是 com.oursnail 包及其子包下的代码)进行日志的分级管理和分类输出 -->
<logger name="com.oursnail" level="debug" >
<appender-ref ref="normalLog" />
<appender-ref ref="errorLog" />
</logger>
<!-- 配置根日志记录器Root Logger它是所有日志记录器的默认父级这里设置其日志级别为 info
也就是会记录 INFO 及以上级别的日志信息,并且将这些日志输出到 "Console" 这个 Appender 对应的控制台中,
对整个应用的日志输出做了一个基础的级别和输出目标的配置 -->
<root level="info">
<appender-ref ref="Console" />
</root>

Loading…
Cancel
Save