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

硅谷探秘者 框架 254 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” 表示不匹配该级别以下的
猜你喜欢
框架 1911 log4j.properties1.完整示例:##屏蔽com.mchange.v2包下面debug,info,warn信息##log4j.logger.xxx=error意为屏蔽xxx包下
框架 1918 1.springboot支持websocketpackagecom.example.demo.websocket
java基础,springboot 341 -user.target 这里要把ExecStart和Descriptino以及User改成自己,把ExecStart指定到jar所在目录,一样,也需要绝对路径。忘了设myApp.service
框架 7145 多么痛领悟~分离资源打包后运行项目,启动失败数据源初始化失败~检查问题,这种情况下没有打印错误,首先一下,将错误报告在控制台中打印出来。resources夹下创建一个
数据库 287 错误一般查询慢查询官方手册:https://dev.mysql.com/doc/refman/5.7/en/server-logs.html管是哪个数据库产品,一定会有。在
linux系统 738 nginx代理域名访问项目二域名a,访问项目aserver{listen80;server_namea.jiajiajia.com;location
框架 1147 ?xmlversion="1.0"encoding="UTF-8"?!DOCTYPElog4j:configurationPUBLIC"-//log4j/log4jConfiguration//EN""log4j.dtd"log4j:configuration!--输出到控制台--appendername="consoleAppender"class="org.apache.log4j.Conso
spring/springmvc 719 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月  1
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo vue 导入导出 软件使用 idea插件 协议 无聊的知识 jenkins springboot mqtt协议 keepalived minio
目录
祝愿神州十三飞行乘组平安归来