1.异常日志>日志规约>第2条: 【强制】日志文件至少保存 15 天,因为有些异常具备以“周”为频次发生的特点。对于当天日志,以“应用名.log”来保存,保存在/{统一目录}/{应用名}/logs/目录下,过往日志格式为:{logname}.log.{保存日期},日期格式:yyyy-MM-dd 正例:以 mppserver 应用为例,日志保存/home/admin/mppserver/logs/mppserver.log,历史日志名称为 mppserver.log.2021-11-28 2.异常日志>日志规约>第3条: 【强制】根据国家法律,网络运行状态、网络安全事件、个人敏感信息操作等相关记录,留存的日志不少于六个月,并且进行网络多机备份。 3.异常日志>日志规约>第9条: 【强制】异常信息应该包括两类信息:案发现场信息和异常堆栈信息。如果不处理,那么通过关键字throws 往上抛出。 正例:logger.error("inputParams: {} and errorMessage: {}", 各类参数或者对象 toString(), e.getMessage(), e); 4.异常日志>日志规约>第12条: 【推荐】可以使用 warn 日志级别来记录用户输入参数错误的情况,避免用户投诉时,无所适从。如非必要,请不要在此场景打出 error 级别,避免频繁报警。 说明:注意日志输出的级别,error 级别只记录系统逻辑出错、异常或者重要的错误信息。
80 lines
4.1 KiB
XML
80 lines
4.1 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
||
<!-- 日志级别从低到高分为 TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为 WARN,则低于 WARN 的信息都不会输出 -->
|
||
<!-- scan:当此属性设置为 true 时,配置文档如果发生改变,将会被重新加载,默认值为 true -->
|
||
<!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。
|
||
当 scan 为 true 时,此属性生效。默认的时间间隔为 1 分钟。 -->
|
||
<!-- debug:当此属性设置为 true 时,将打印出 logback 内部日志信息,实时查看 logback 运行状态。默认值为 false。 -->
|
||
<configuration debug="false" scan="true" scanPeriod="30 seconds">
|
||
|
||
<!-- 应用名 -->
|
||
<springProperty name="APP_NAME" source="spring.application.name" scope="context" />
|
||
<!-- 保存路径 -->
|
||
<property name="LOG_PATH" value="${LOG_PATH:-./logs}" />
|
||
<!-- 字符集 -->
|
||
<property name="LOG_CHARSET" value="utf-8" />
|
||
<!-- 控制台输出格式(带颜色) -->
|
||
<!-- 格式化输出:%d 表示日期;%thread 表示线程名;%-5level:级别从左显示 5 个字符宽度;%msg:日志消息;%n 是换行符 -->
|
||
<property name="CONSOLE_LOG_PATTERN" value="%red(%d{yyyy-MM-dd HH:mm:ss}) %highlight(%-5level) %green([%thread]) %boldMagenta(%logger{50}) - %msg%n" />
|
||
<!-- 文件输出格式 -->
|
||
<property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger{50} - %msg%n"/>
|
||
|
||
<!-- 输出日志到控制台 -->
|
||
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||
<encoder>
|
||
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
|
||
<charset>${LOG_CHARSET}</charset>
|
||
</encoder>
|
||
</appender>
|
||
|
||
<!-- 输出日志到控制台(不带颜色) -->
|
||
<appender name="CONSOLE_PROD" class="ch.qos.logback.core.ConsoleAppender">
|
||
<encoder>
|
||
<pattern>${FILE_LOG_PATTERN}</pattern>
|
||
<charset>${LOG_CHARSET}</charset>
|
||
</encoder>
|
||
</appender>
|
||
|
||
<!-- 输出日志到文件 -->
|
||
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||
<!-- 正在记录的日志文件的路径及文件名 -->
|
||
<file>${LOG_PATH}/${APP_NAME}.log</file>
|
||
<!-- 滚动策略:基于时间归档日志文件 -->
|
||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||
<!-- 归档日志文件的路径及文件名 -->
|
||
<fileNamePattern>${LOG_PATH}/${APP_NAME}.log.%d{yyyy-MM-dd}.gz</fileNamePattern>
|
||
<!-- 归档日志最大保留数量(取决于 fileNamePattern 配置的规则,例如:配置归档为每天 1 个文件,那么保留 15 个也可以理解为是保留 15 天) -->
|
||
<maxHistory>15</maxHistory>
|
||
</rollingPolicy>
|
||
<encoder>
|
||
<pattern>${FILE_LOG_PATTERN}</pattern>
|
||
<charset>${LOG_CHARSET}</charset>
|
||
</encoder>
|
||
</appender>
|
||
|
||
<!-- 输出日志到文件(异步) -->
|
||
<appender name="ASYNC_FILE" class="ch.qos.logback.classic.AsyncAppender">
|
||
<!-- 不丢失日志,默认:如果队列的 80% 已满,则会丢弃 TRACT、DEBUG、INFO 级别的日志 -->
|
||
<discardingThreshold>0</discardingThreshold>
|
||
<!-- 更改默认的队列的深度,该值会影响性能,默认:256 -->
|
||
<queueSize>512</queueSize>
|
||
<!-- 添加附加的 appender,最多只能添加一个 -->
|
||
<appender-ref ref="FILE"/>
|
||
</appender>
|
||
|
||
<!-- 开发环境:只打印到控制台 -->
|
||
<springProfile name="dev">
|
||
<!-- 如果配置的日志等级,和 application.yml 中的日志等级配置重叠,application.yml 配置优先级高 -->
|
||
<root level="INFO">
|
||
<appender-ref ref="CONSOLE"/>
|
||
</root>
|
||
</springProfile>
|
||
|
||
<!-- 生产环境:打印到控制台并输出到文件 -->
|
||
<springProfile name="prod">
|
||
<root level="INFO">
|
||
<appender-ref ref="CONSOLE_PROD"/>
|
||
<appender-ref ref="ASYNC_FILE"/>
|
||
</root>
|
||
</springProfile>
|
||
</configuration>
|