springboot2.0整合logback日志(详细)

2023-11-07

文章转载于
https://www.cnblogs.com/zhangjianbing/p/8992897.html

<dependencies>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.2.3</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-to-slf4j</artifactId>
      <version>2.10.0</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>jul-to-slf4j</artifactId>
      <version>1.7.25</version>
      <scope>compile</scope>
    </dependency>
</dependencies>

首先,官方推荐使用的xml名字的格式为:logback-spring.xml而不是logback.xml,至于为什么,因为带spring后缀的可以使用这个标签。
在resource下创建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:/nmyslog/nmys" />

    <!-- 彩色日志 -->
    <!-- 彩色日志依赖的渲染类 -->
    <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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springboot2.0整合logback日志(详细) 的相关文章

随机推荐

  • 福禄克铜缆测试参数:近端串扰和远端串扰参数之间的区别

    串扰指的是网线在传输网络信号中 产生了彼此的互相干扰 严重的时候会影响到网络传输得质量 网线的双绞程度越紧密 绞距越均匀时 其抗干扰的能力也会越强 且内部的串扰也会越小 在长距离网络传输中 效果也就越好 串扰会对具体的一对导线或整根电缆形成
  • linux 文件扫描程序 性能,Linux性能优化(三)——sysstat性能监控工具

    一 sysstat简介 1 sysstat简介 sysstat提供了Linux性能监控工具集 包括sar sadf mpstat iostat pidstat等 用于监控Linux系统性能和使用情况 iostat 提供CPU统计 存储I O
  • MFC异形对话框

    基本原理 获取窗体区域 指定一个颜色为透明色 遍历位图 将图上所有该色区域从窗体区域中去除 这样最后就得到了一个异形窗体 然后把背景图绘制在该窗体上 注意绘制的时候 作为透明的部分依然会被以原色绘制 但是由于绘制的地方并没有窗体 故而是显示
  • Java用链表实现队列

    链表实现队列 public class LinkedQueue class Node int val Node next public Node int val this val val public Node int val Node n
  • JQuery全部过滤选择器详细介绍上

    文章目录 JQuery全部过滤选择器详细介绍 上 基础过滤选择器 基础过滤选择器介绍 基础过滤选择器 应用实例 代码演示 内容过滤选择器 内容过滤选择器应用实例 代码演示 可见度过滤选择器 可见度过滤选择器 应用实例 代码演示 JQuery
  • 解决position:sticky元素有父盒子时不生效的问题

    当使用粘性定位的盒子出现 当滚动条滚动一段距离有效 然后就跟着滚动条滚出视口 不起作用了 要考虑看你是否设置了 html body height 100 这个代码会影响html和body的高度 不是整个视口的高度 参考 彻底理解粘性定位 p
  • Python期末大作业(学生成绩管理系统)

    学生成绩管理系统共分为五个主要功能 1 用户登陆和注册模块和退出 a 注册存入文件中 见文件 账号密码 csv b 用户登陆在文件中进行查询 见文件 账号密码 csv c 退出可以退出程序 2 新增学生数据 a 通过录入学生的姓名 学号 科
  • Thinkphp5进阶——02 日志

    1 存储位置 index php入口文件定义一个常量LOG PATH log php配置文件的path定义为常量LOG PATH index php 日志目录 define LOG PATH DIR log log php return 日
  • Vue使用Echarts在父子组件中传值问题

    最近项目上需要使用到Echarts做数据可视化 在写项目过程中发现在子组件中通过Echarts点击事件传值给父组件不起作用 研究了一下 发现是作用域问题 解决方法如下 原代码 通过保存外部作用域this得以解决 修改后代码
  • 刷题day68:零钱兑换

    题意描述 给你一个整数数组 coins 表示不同面额的硬币 以及一个整数 amount 表示总金额 计算并返回可以凑成总金额所需的 最少的硬币个数 如果没有任何一种硬币组合能组成总金额 返回 1 你可以认为每种硬币的数量是无限的 完全背包思
  • 一图曝光互联网大佬高考分数,厉害了

    往 期 趣 闻 程序员生日送什么蛋糕好 每日趣闻 人间真实 Java 版 后浪 每日趣闻 如何鉴别 996 公司 每日趣闻 一图读懂程序员 35 岁怎么转型 每日趣闻 程序员的难 领导不懂 每日趣闻 你点的每个 在看 我都认真当成了喜欢
  • How to resolve '_DllMain@12 already defined in xxx.obj' ?

    转自 http blog csdn net psusong article details 5858388 用Visual C 编写DLL 如果在new project时选了MFC DLL 而后又想写成Regular DLL 即拥有自己的D
  • 使用ksniff分析k8s pod的抓包分析

    使用ksniff分析k8s pod的抓包分析 ksniff是一个kubectl插件 利用tcpdump和Wireshark对Kubernetes集群中的任何pod进行远程捕获 可以得到Wireshark的全部功能 而对你正在运行的pods影
  • table表格中使用插槽

    效果图如下 实现代码如下
  • js 解决回调地狱的方法

    异步编程作为JavaScript中的一部分 具有非常重要的位置 它帮助我们避免同步代码带来的线程阻塞的同时 也为编码与阅读带来了一定的困难 过多的回调嵌套很容易会让我们陷入 回调地狱 中 使代码变成一团乱麻 为了解决 回调地狱 我们可以使用
  • “数字水印”来临,一波“反ChatGPT”的技术开始冒头

    数科星球 原创 作者丨数数 编辑丨十里香 ChatGPT爆火 对于这项技术来说 似乎无所不能 从作曲 小说 文章再到编剧 人们这些天为该项技术忙活的不亦乐乎 但事情很快得到了反转 有些人开始担心这项新的技术会被坏人所利用 而在版权界 生成式
  • 区块链学习笔记12——BTC思考

    区块链学习笔记12 BTC思考 学习视频 北京大学肖臻老师 区块链技术与应用 笔记参考 北京大学肖臻老师 区块链技术与应用 公开课系列笔记 目录导航页 哈希指针 BTC系统中很多地方用到了哈希指针 比如区块的块头就包含指向前一个区块的哈希指
  • MAC笔记本上搭建Vue环境

    1 安装Node js 打开终端 Terminal 在终端中输入以下命令安装Node js brew install node 如果你没有安装Homebrew 你可以在终端中输入以下命令安装 bin bash c curl fsSL htt
  • 计算机网络(二)

    目录 一 网络编程基础 1 1 为什么需要网络编程 1 2 什么是网络编程 1 3 网络编程中的基本概念 二 Socket套接字 2 1 概念 2 2 分类 2 3 Java数据报套接字通信模型 2 4 Java流套接字通信模型 2 5 U
  • springboot2.0整合logback日志(详细)

    文章转载于 https www cnblogs com zhangjianbing p 8992897 html