springboot整合logback

2023-11-15

1.在springboot项目resource目录下,创建一个(logback-spring.xml)文件

在这里插入图片描述

2.在logback-spring.xml文件中添加内容

<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration  scan="true" scanPeriod="10 seconds">

    <!--<include resource="org/springframework/boot/logging/logback/base.xml" />-->

    <contextName>logback</contextName>
    <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 -->
    <property name="log.path" value="D:/logs" />

    <!-- 彩色日志 -->
    <!-- 彩色日志依赖的渲染类 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
    <!-- 彩色日志格式 -->
    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>


    <!--输出到控制台-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>info</level>
        </filter>
        <encoder>
            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>


    <!--输出到文件-->

    <!-- 时间滚动输出 level为 DEBUG 日志 -->
    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文件的路径及文件名 -->
        <file>${log.path}/log_debug.log</file>
        <!--日志文件输出格式-->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 设置字符集 -->
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志归档 -->
            <fileNamePattern>${log.path}/debug/log-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文件保留天数-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <!-- 此日志文件只记录debug级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>debug</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- 时间滚动输出 level为 INFO 日志 -->
    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文件的路径及文件名 -->
        <file>${log.path}/log_info.log</file>
        <!--日志文件输出格式-->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 每天日志归档路径以及格式 -->
            <fileNamePattern>${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文件保留天数-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <!-- 此日志文件只记录info级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>info</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- 时间滚动输出 level为 WARN 日志 -->
    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文件的路径及文件名 -->
        <file>${log.path}/log_warn.log</file>
        <!--日志文件输出格式-->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文件保留天数-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <!-- 此日志文件只记录warn级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>warn</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>


    <!-- 时间滚动输出 level为 ERROR 日志 -->
    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文件的路径及文件名 -->
        <file>${log.path}/log_error.log</file>
        <!--日志文件输出格式-->
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文件保留天数-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <!-- 此日志文件只记录ERROR级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!--
        <logger>用来设置某一个包或者具体的某一个类的日志打印级别、
        以及指定<appender>。<logger>仅有一个name属性,
        一个可选的level和一个可选的addtivity属性。
        name:用来指定受此logger约束的某一个包或者具体的某一个类。
        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
              还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。
              如果未设置此属性,那么当前logger将会继承上级的级别。
        addtivity:是否向上级logger传递打印信息。默认是true。
    -->
    <!--<logger name="org.springframework.web" level="info"/>-->
    <!--<logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/>-->
    <!--
        使用mybatis的时候,sql语句是debug下才会打印,而这里我们只配置了info,所以想要查看sql语句的话,有以下两种操作:
        第一种把<root level="info">改成<root level="DEBUG">这样就会打印sql,不过这样日志那边会出现很多其他消息
        第二种就是单独给dao下目录配置debug模式,代码如下,这样配置sql语句会打印,其他还是正常info级别:
     -->


    <!--
        root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性
        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
        不能设置为INHERITED或者同义词NULL。默认是DEBUG
        可以包含零个或多个元素,标识这个appender将会添加到这个logger。
    -->

    <!--开发环境:打印控制台-->
    <springProfile name="dev">
        <logger name="com.nmys.view" level="debug"/>
    </springProfile>

    <root level="info">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="DEBUG_FILE" />
        <appender-ref ref="INFO_FILE" />
        <appender-ref ref="WARN_FILE" />
        <appender-ref ref="ERROR_FILE" />
    </root>

    <!--生产环境:输出到文件-->
    <!--<springProfile name="pro">-->
    <!--<root level="info">-->
    <!--<appender-ref ref="CONSOLE" />-->
    <!--<appender-ref ref="DEBUG_FILE" />-->
    <!--<appender-ref ref="INFO_FILE" />-->
    <!--<appender-ref ref="ERROR_FILE" />-->
    <!--<appender-ref ref="WARN_FILE" />-->
    <!--</root>-->
    <!--</springProfile>-->

</configuration>

3.在application.yml中配置

logging:
  config: classpath:logback-spring.xml

4.运行成功

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springboot整合logback 的相关文章

随机推荐

  • 0.前言 与 Eigen库的使用整理

    C 基于Eigen库实现CRN前向推理 前言 背景 与 Eigen库的使用整理 前言 Eigen库使用记录 第一部分 WavFile class 实现读取wav pcm 实现STFT 第二部分 Conv2d实现 第三部分 Transpose
  • vue ref是在组件里唯一吗_见解vue3.0-纠结用 ref 还是 reactive

    用人人都听得懂的话来阐述 ref reactive isRef toRefs ref 函数用来根据给定的值创建一个响应式的数据对象 ref 函数调用的返回值是一个对象 这个对象上只包含一个 value 属性 count import ref
  • 迪杰斯特拉算法 旅游规划

    目录 题目描述 AC代码 题目描述 有了一张自驾旅游路线图 你会知道城市间的高速公路长度 以及该公路要收取的过路费 现在需要你写一个程序 帮助前来咨询的游客找一条出发地和目的地之间的最短路径 如果有若干条路径都是最短的 那么需要输出最便宜的
  • DELL旧服务器清空原有磁盘配置、划分新磁盘安装系统的方法

    https blog csdn net qingsongleo article details 31788075 有很多创业公司为了节省成本 会通过一些途径购买二手的服务器 二手服务器不能直接使用 因为服务器里现存的配置可能和自己的生产环境
  • 【JDK】Mac版安装JDK并配置环境

    参考文章地址 https www cnblogs com dingzhijie p 7016397 html https blog csdn net deliciousion article details 78046007 教程内容为在M
  • linux日志生成速率统计,Linux学习29-awk提取log日志信息,统计日志里面ip访问次数排序...

    前言 有一段log日志 需从日志里面分析 统计IP访问次数排序前10名 查看是否有异常攻击 日志提取 如下日志 这段日志包含的信息内容较多 我们希望提取ip 访问时间 请求方式 访问路径 不带参数 状态码 123 125 72 61 05
  • numpy.empty的用法

    一 用法 np empty shape dtype float order C 二 参数 shape 返回空数组的维度 dtype 指定输出数组的数值类型 order 是否在内存中以C或fortran 行或列 顺序存储多维数据 三 返回值
  • qt Connect 连接两种方式

    https blog csdn net xiezhongyuan07 article details 79247022 写的挺清楚
  • python画玫瑰图_python之windrose风向玫瑰图的用法-Go语言中文社区

    1 安装 A package is available and can be downloaded from PyPi and installed using pip install windrose Install latest deve
  • SamlSsoClient

    Copyright C 2009 Google Inc Licensed under the Apache License Version 2 0 the License you may not use this file except i
  • 显示具体化、显示实例化、隐式实例化

    讨论这三者的区别我们要先认识函数模板 函数模板是C 新增的功能 他会创建一个通用的函数以支持多种不同类型的形参 避免函数体的重复设计 在我们需要重复用到某一段代码但是需要处理不同类型的参数时 使用函数模板是很方便的一个手段他最大的特点是把数
  • 列可以设置 :formatter,对列的值进行处理

    需要对数字进行处理
  • 美图2022年财报:AIGC引领创新,多重驱动共振向上

    2022年是美图发展的关键之年 在数字化趋势加速的背景下 美图通过持续优化用户体验和不断拓展业务领域边界 进一步巩固了其行业竞争优势 近日 美图公司发布2022财年年度业绩 在收入 用户 创新等方面均取得了令人瞩目的成绩 展现了强劲的发展势
  • VMware导入vmdk文件(亲测有效)

    场景 从别的地方拷贝了一个系统镜像 后缀是vmdk格式 现在演示如何导入到本地 操作步骤 打开vmware 点击文件 新建虚拟机 2 选择自定义 高级 下一步 3 硬件兼容性 默认选择最新的行 因为和本地安装的vmware版本有关 这里演示
  • Fiddler笔记(一)

    个人学习笔记 整理不易 有帮助点个赞 笔记目录 学习笔记目录 pytest和unittest airtest weixin 42717928的博客 CSDN博客 目录 一 简单了解 二 下载安装 三 工具使用 四 HTTP协议报文结构 1
  • 【操作系统】Linux常用基础和高级命令

    目录 一 Linux内核 二 Linux发行版 操作系统 三 Linux终端 三 Linux终端命令 1 命令格式 2 常用基础命令 1 查看目录命令 2 切换目录命令 3 创建文件和目录命令 4 删除文件和目录命令 5 复制文件和目录命令
  • 使用LeNet实现图像分类任务

    本篇的主要内容是解析一下使用MindSpore深度学习框架训练LeNet网络对Mnist数据集进行分类 首先我给大家展示出本篇内容的一个示意图 帮助大家更直观的看到训练过程的一个重要步骤 如图所示 其中1 2 3 表示训练过程中的次序 下面
  • RSA密码原理详解及算法实现(六步即可掌握)

    一 RSA算法概述 rsa算法是一种非对称加密算法 其安全性是建立在大素数难以分解的基础上的 即将两个大素数相乘十分容易 但想对其乘积进行分解却很困难 所以可以将其乘积公开作为加密密钥 二 RSA算法设计理念 根据数论 寻求两个大素数比较简
  • mysql默认值语句

    添加新字段 并设置默认值 alter table test tb add column col3 varchar 20 not null DEFAULT abc 修改原有默认值 alter table test tb alter colum
  • springboot整合logback

    1 在springboot项目resource目录下 创建一个 logback spring xml 文件 2 在logback spring xml文件中添加内容