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

硅谷探秘者 框架 537 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” 表示不匹配该级别以下的
猜你喜欢
框架 2056 log4j.properties1.完整示例:##屏蔽com.mchange.v2包下面debug,info,warn信息##log4j.logger.xxx=error意为屏蔽xxx包下
框架 2067 1.springboot支持websocketpackagecom.example.demo.websocket
java基础,springboot 539 -user.target 这里要把ExecStart和Descriptino以及User改成自己,把ExecStart指定到jar所在目录,一样,也需要绝对路径。忘了设myApp.service
框架 7305 多么痛领悟~分离资源打包后运行项目,启动失败数据源初始化失败~检查问题,这种情况下没有打印错误,首先一下,将错误报告在控制台中打印出来。resources夹下创建一个
数据库 486 错误一般查询慢查询官方手册:https://dev.mysql.com/doc/refman/5.7/en/server-logs.html管是哪个数据库产品,一定会有。在
linux系统 856 nginx代理域名访问项目二域名a,访问项目aserver{listen80;server_namea.jiajiajia.com;location
框架 1574 springboot上传与回显资源映射路径:packagecom.dzqc.yx.controller
spring/springmvc 882 springboot打包成war包tomcat运行一、pom把jar修改war:packagingwar/packaging二、去除springboot
归档
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
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo vue 导入导出 软件使用 idea插件 协议 无聊的知识 jenkins springboot mqtt协议 keepalived minio mysql ensp 网络基础 xxl-job
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。