springboot logback日志配置-不同级别的日志放不同文件

硅谷探秘者 Md 框架 1545 0 0

一、自定义logback-spring.xml配置文件

logback-spring.xmllogback-spring.xml

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
    <!-- 日志输出路径 -->
    <springProperty scope="context" name="log.path" source="log.path" defaultValue=""/>
    <!-- 日志输出级别 -->
    <springProperty scope="context" name="log.level" source="log.level" defaultValue=""/>
    <!-- 文件输出格式 -->
    <property name="PATTERN"
              value="[%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger %line  --%mdc{client} %msg%n"/>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <appender name="file-debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <!-- 文件路径 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 文件名称 -->
            <fileNamePattern>${log.path}/debug/%d{yyyy_MM_dd}-%i.log</fileNamePattern>
            <!-- 文件最大保存历史数量 -->
            <maxHistory>30</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>

        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>${PATTERN}</pattern>
        </layout>

        <encoder>
            <pattern>${PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <appender name="file-info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <!-- 文件路径 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 文件名称 -->
            <fileNamePattern>${log.path}/info/%d{yyyy_MM_dd}-%i.log</fileNamePattern>
            <!-- 文件最大保存历史数量 -->
            <maxHistory>30</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>

        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>${PATTERN}</pattern>
        </layout>

        <encoder>
            <pattern>${PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <appender name="file-warn" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>WARN</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <!-- 文件路径 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 文件名称 -->
            <fileNamePattern>${log.path}/warn/%d{yyyy_MM_dd}-%i.log</fileNamePattern>
            <!-- 文件最大保存历史数量 -->
            <maxHistory>30</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>

        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>${PATTERN}</pattern>
        </layout>

        <encoder>
            <pattern>${PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <appender name="file-error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <!-- 文件路径 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 文件名称 -->
            <fileNamePattern>${log.path}/error/%d{yyyy_MM_dd}-%i.log</fileNamePattern>
            <!-- 文件最大保存历史数量 -->
            <maxHistory>30</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>

        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>${PATTERN}</pattern>
        </layout>

        <encoder>
            <pattern>${PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!-- 下面配置一些第三方包的日志过滤级别,用于避免刷屏 -->
    <logger name="com.mchange" level="ERROR"/>
    <logger name="org.mybatis" level="DEBUG"/>
    <logger name="org.springframework" level="WARN"/>
    <logger name="org.apache.zookeeper" level="INFO"/>
    <logger name="java.sql.Connection" level="DEBUG"/>
    <logger name="java.sql.ResultSet" level="DEBUG"/>
    <logger name="java.sql.PreparedStatement" level="DEBUG"/>
    <logger name="org.apache.http.wire" level="OFF"/>
    <logger name="org.apache.commons" level="INFO"/>
    <logger name="org.apache.catalina" level="ERROR"/>
    <logger name="com.ulisesbocchio.jasyptspringboot" level="WARN"/>
    <logger name="com.alibaba.nacos.client.naming" level="OFF"/>
    <root level="${log.level}">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="file-debug"/>
        <appender-ref ref="file-info"/>
        <appender-ref ref="file-warn"/>
        <appender-ref ref="file-error"/>
    </root>

</configuration>

不同级别的日志由不同的appender处理。

二、application.yml配置

日志的文件存放目录等日志级别在application.yml中配置

application.yml

log:
  path: D:\data\log #日志输出路径
  level: WARN # 输出日志的等级,TRACE < DEBUG < INFO < WARN < ERROR

三、onMatch和onMismatch属性说明

  onMatch和onMismatch都有三个属性值,分别为AcceptDENYNEUTRAL

分别介绍这两个配置项的三个属性值:

  • onMatch=”ACCEPT” 表示匹配该级别及以上
  • onMatch=”DENY” 表示不匹配该级别及以上
  • onMatch=”NEUTRAL” 表示该级别及以上的,由下一个filter处理,如果当前是最后一个,则表示匹配该级别及以上
  • onMismatch=”ACCEPT” 表示匹配该级别以下
  • onMismatch=”NEUTRAL” 表示该级别及以下的,由下一个filter处理,如果当前是最后一个,则不匹配该级别以下的
  • onMismatch=”DENY” 表示不匹配该级别以下的

评论区
请写下您的评论...
暂无评论...
猜你喜欢
框架,springboot 1007 一、需求:二、logback-spring.xml详情三、application.yml中添加多环境四、测试是否成功五、输出到一、需求: 使用
框架 2925 log4j.properties1.完整示例:##屏蔽com.mchange.v2包下面debug,info,warn信息##log4j.logger.xxx=error意为屏蔽xxx包下
框架 2916 1.springboot支持websocketpackagecom.example.demo.websocket
java基础,springboot 1736 -user.target 这里要把ExecStart和Descriptino以及User改成自己,把ExecStart指定到jar所在目录,一样,也需要绝对路径。忘了设myApp.service
框架 8115 多么痛领悟~分离资源打包后运行项目,启动失败数据源初始化失败~检查问题,这种情况下没有打印错误,首先一下,将错误报告在控制台中打印出来。resources夹下创建一个
数据库 1485 错误一般查询慢查询官方手册:https://dev.mysql.com/doc/refman/5.7/en/server-logs.html管是哪个数据库产品,一定会有。在
linux系统 1602 nginx代理域名访问项目二域名a,访问项目aserver{listen80;server_namea.jiajiajia.com;location
框架 2261 ?xmlversion="1.0"encoding="UTF-8"?!DOCTYPElog4j:configurationPUBLIC"-//log4j/log4jConfiguration//EN""log4j.dtd"log4j:configuration!--输出到控制台--appendername="consoleAppender"class="org.apache.log4j.Conso
归档
2018-11  12 2018-12  33 2019-01  28 2019-02  28 2019-03  32 2019-04  27 2019-05  33 2019-06  6 2019-07  12 2019-08  12 2019-09  21 2019-10  8 2019-11  15 2019-12  25 2020-01  9 2020-02  5 2020-03  16 2020-04  4 2020-06  1 2020-07  7 2020-08  13 2020-09  9 2020-10  5 2020-12  3 2021-01  1 2021-02  5 2021-03  7 2021-04  4 2021-05  4 2021-06  1 2021-07  7 2021-08  2 2021-09  8 2021-10  9 2021-11  16 2021-12  14 2022-01  7 2022-05  1 2022-08  3 2022-09  2 2022-10  2 2022-12  5 2023-01  3 2023-02  1 2023-03  4 2023-04  2 2023-06  3 2023-07  4 2023-08  1 2023-10  1 2024-02  1 2024-03  1 2024-04  1 2024-08  1
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo vue 导入导出 软件使用 idea插件 协议 无聊的知识 jenkins springboot mqtt协议 keepalived minio mysql ensp 网络基础 xxl-job rabbitmq haproxy srs 音视频 webrtc javascript 加密算法
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。