logback日志

292 阅读1分钟

logback

日志配置

日志颜色设置

%red(%d{HH:mm:ss.SSS}) %highlight(%-5level) %X{environment} %green(%logger{20}) - %msg%n

  • 第一点,颜色%black() %red()等等 ,需要用括号将你要显示本颜色的子模块括起来
  • 第二点,%red()颜色等,前面要与上一个模块 空格隔开
  • %d{时间格式}: 如 %d{yyyy-MM-dd HH:mm:ss.SSS} 表示年-月-日 时:分:秒.毫秒
  • %thread%t表示线程名称,
  • %-5level:表示日志级别,最多显示5个字符的长度,左对齐
  • %logger{36}:表示日志记录器名称,最多显示36个字符的长度
  • %msg:表示日志消息
  • %n:表示换行符
  • %file:表示日志语句所在的源文件名
  • %line%L表示日志语句所在的源文件中的行号
  • %method:表示日志语句所在的方法名
  • %class:表示日志语句所在的类名
  • %relative:表示日志事件的时间相对于应用程序启动时间的差值,以毫秒为单位
  • %loggerContext:表示日志记录器上下文的名称
  • %marker:表示与日志事件相关联的标记
  • %mdc{key}:表示从MDC(Mapped Diagnostic Context)中获取具有给定键的值
  • %ex:表示异常信息,如果有的话
  • %pid:表示当前进程的进程ID
  • %l:表示日志事件所在的类、方法、源文件名和行号的完整位置信息
  • %X:表示ThreadContextMap中与日志事件关联的键值对

参考

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 读取spring配置文件 -->
    <springProperty scope="context" name="log.path" source="log.path" defaultValue="logs"/>
    <springProperty scope="context" name="log.env" source="env.name" defaultValue="NO"/>
    
    <!-- 定义属性,以便下面应用 -->
    <property name="LOG_PATH" value="logs" />
    <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %-40.40logger{39} : %msg%n" />

    <!-- 控制台输出,class 为Appender实现类,内部为实现类属性 -->
    <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
        <!-- 彩色日志 -->
        <layout class="ch.qos.logback.classic.PatternLayout">
        <!-- <pattern>%d [%t] %-5level|%mdc{traceId}|%mdc{bizCode}|%logger{36}.%M\(%file:%line\) - %msg%n</pattern> -->
            <pattern>
                %d{yyyy-MM-dd HH:mm:ss} [%thread] %magenta(%-5level) %green([%-50.50class]) >>> %cyan(%msg) %n
            </pattern>
        </layout>
    </appender>

    <!-- 按照每天生成日志文件 -->
    <appender name="fileLog"  class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <FileNamePattern>${LOG_PATH}/cms.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
            <!--日志文件最大的大小-->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文件保留天数-->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <!-- 指定项目中某个包,当有日志操作行为时的日志记录级别 -->
    <!-- 级别依次为【从高到低】:FATAL > ERROR > WARN > INFO > DEBUG > TRACE  -->
    <!-- additivity=false 表示匹配之后,不再继续传递给其他的logger-->
    <logger name="com.github.paicoding.forum" level="INFO" additivity="false">
        <appender-ref ref="service"/>
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="errorAlarm"/>
    </logger>

    <!--定义日志的根配置,,level: 低于该级别的日志将被忽略 -->
    <root level="info">
        <!-- 指定了日志记录的输出目标,ref为上面 appender.name值-->
        <appender-ref ref="consoleLog" />
        <appender-ref ref="fileLog" />
    </root>

</configuration>