Log

Logback日志配置

2019-06-17  本文已影响0人  代码腌菜

springboot 使用指定 logback.xml 的方法:

application.yml 配置

logging:
  config: classpath:conf/logback-spring.xml
  path: d:/logs #日志路径

logback-spring.xml 文件获取 application.yml 里的值。logback 提供了 一个标签 <springProperty>

<springProperty scope="context" name="log_home" source="logging.path"/>

例子:日志级别分离

<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
         
    <springProperty scope="context" name="log_home" source="logging.path"/> 
    <!--输出表达式:时间 - 日志级别 线程 输出日志的类 输出的信息 换行-->
    <property name="my_pattern"
              value="%d{yyyy-MM-dd HH:mm:ss.SSS} -%5p [%15.15t] [%-40.40logger{39}] %m%n"></property>
    <!--日志保留的份数:10份-->
    <property name="my_max_history" value="10"></property>
    <!--
        文件输出格式和频率:也将作为文件名的一部分
            yyyy-MM-dd-HH   每小时生成一个文件
            yyyy-MM-dd      每天生成一个文件
    -->
    <property name="file_name" value="yyyy-MM-dd-HH"></property>
    <!--控制台输出-->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${my_pattern}</pattern>
            <charset>utf8</charset>
        </encoder>
    </appender>
    <!--只输出 ERROR 以下级别-->
    <appender name="INFOLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>
        <encoder>
            <pattern>${my_pattern}</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log_home}/hc_log_info_%d{${file_name}}.log</fileNamePattern>
            <maxHistory>${my_max_history}</maxHistory>
        </rollingPolicy>
    </appender>
    <!--输出 WARN 和 ERROR 级别-->
    <appender name="ERRORLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>WARN</level>
        </filter>
        <encoder>
            <pattern>${my_pattern}</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log_home}/hc_log_error_%d{${file_name}}.log</fileNamePattern>
            <maxHistory>${my_max_history}</maxHistory>
        </rollingPolicy>
    </appender>
    <logger name="org.apache.catalina.startup.DigesterFactory" level="ERROR"/>
    <logger name="org.apache.catalina.util.LifecycleBase" level="ERROR"/>
    <logger name="org.apache.coyote.http11.Http11NioProtocol" level="WARN"/>
    <logger name="org.apache.sshd.common.util.SecurityUtils" level="WARN"/>
    <logger name="org.apache.tomcat.util.net.NioSelectorPool" level="WARN"/>
    <logger name="org.crsh.plugin" level="WARN"/>
    <logger name="org.crsh.ssh" level="WARN"/>
    <logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="ERROR"/>
    <logger name="org.hibernate.validator.internal.util.Version" level="WARN"/>
    <logger name="org.springframework.boot.actuate.autoconfigure.CrshAutoConfiguration" level="WARN"/>
    <logger name="org.springframework.boot.actuate.endpoint.jmx" additivity="false"></logger>
    <logger name="org.thymeleaf" additivity="false"></logger>
    <logger name="com.gov.xsbn" level="DEBUG"></logger>
    <root level="INFO">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="INFOLOG"/>
        <appender-ref ref="ERRORLOG"/>
    </root>
</configuration>

综合笔记

说明:这里的配置是指xml的配置。

思维整理:


image.png

configuration 标签:

image.png

properties 标签

image.png

root 标签

appender 完整配置:分为2个,一个是控制台,一个是滚动文件

<!--  控制台输出    -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!--encoder : 日志信息的输出模式-->
        <encoder>
            <!--输出例子:控制台输出:- xxxxxxxxxxxxxxxxxxx -->
            <pattern>控制台日志: - %msg %n</pattern>
        </encoder>
    </appender>
    <!--文件滚动输出-->
    <appender name="FILELOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--encoder : 日志信息的输出模式-->
        <encoder>
            <pattern>文件输出: - %msg %n</pattern>
        </encoder>
        <!--
            输出过滤器:给输出的日志在进行一层过滤
           常用的:
            ch.qos.logback.classic.filter.LevelFilter 复杂点,下面写了一个例子
            ch.qos.logback.classic.filter.ThresholdFilter 简单,输出的级别大于等于 level 标签里的值都输出
                <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                    <level>INFO</level>
                </filter>
        -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!--
                只输出 INFO 的内容
            -->
            <!--level 判断条件 -->
            <level>INFO</level>
            <!--
                onMatch(匹配成功) 有2个值: ACCEPT 和 DENY
                输出的级别等于 level 标签里的 级别时:
                    如果值 = ACCEPT ,则输出
                    如果值 = DENY , 不输出
            -->
            <onMatch>ACCEPT</onMatch>
            <!--
                onMismatch(匹配不成功) 有2个值: ACCEPT 和 DENY
                输出的级别等于 level 标签里的 级别时:
                    如果值 = ACCEPT ,则输出
                    如果值 = DENY , 不输出
            -->
            <onMismatch>DENY</onMismatch>
        </filter>
        <!--
            生成的文件名称:
            ch.qos.logback.core.rolling.TimeBasedRollingPolicy:时间滚动策略
        -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--每分钟生成一个文件-->
            <fileNamePattern>d:/lijia_%d{yyyy-MM-dd_hh_mm}.log</fileNamePattern>
            <!--只保留10个文件-->
            <maxHistory>10</maxHistory>
        </rollingPolicy>
    </appender>
上一篇下一篇

猜你喜欢

热点阅读