pull/4/head
zhouyu 9 months ago
parent 2f8ee375fe
commit e4229afc0b

@ -1,33 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- 这是整个 logback 配置文件的根节点,所有的日志配置相关内容都在这个节点下进行定义 -->
<configuration>
<!-- 定义一个名为 LOG_HOME 的属性,其值为 "/logs/user/",用于后续配置中作为日志文件的存储路径基础部分,
通过这种属性定义的方式,可以方便地统一修改日志文件的存储位置,提高配置的灵活性 -->
<property name="LOG_HOME" value="/logs/user/" />
<!-- 配置一个名为 Console 的日志输出 Appender类型为 ch.qos.logback.core.ConsoleAppender它用于将日志输出到控制台
方便在开发调试阶段或者查看实时日志信息时使用 -->
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<!-- 定义编码器Encoder用于指定日志输出的格式 -->
<encoder>
<!-- 这里配置的日志格式为时间精确到小时和分钟、日志级别占5个字符宽度且左对齐、日志记录器名称最长16个字符以及日志消息内容最后换行 -->
<pattern>%d{H:mm} %-5level [%logger{16}] %msg%n</pattern>
</encoder>
</appender>
<!-- 配置一个名为 normalLog 的日志输出 Appender类型为 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>
<!-- 定义日志的布局格式,与前面 Console Appender 中的类似,不过这里时间精确到了毫秒,并且包含了线程信息等,
用于规范日志在文件中的输出格式 -->
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{16} - %msg%n
</pattern>
</layout>
<!-- 配置一个过滤器LevelFilter用于根据日志级别来决定是否接受该日志进行输出
这里对于 ERROR 级别的日志进行过滤 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 指定过滤的日志级别为 ERROR -->
<level>ERROR</level>
<!-- 如果日志级别匹配(这里就是 ERROR 级别),则拒绝该日志输出,也就是不会记录到这个 normalLog 对应的日志文件中 -->
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
<!-- 如果日志级别不匹配(即不是 ERROR 级别),则接受该日志输出,会正常记录到日志文件中 -->
<onMismatch>ACCEPT</onMatch>
</filter>
</appender>
<!-- 配置一个名为 errorLog 的日志输出 Appender同样是基于滚动文件的方式结构和前面的 normalLog 类似,但在日志级别过滤方面有所不同 -->
<appender name="errorLog"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
@ -44,18 +69,22 @@
</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 对应的日志文件中,实现了对特定包下日志的分级和分类输出管理 -->
<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