springboot集成logback配置文件,配置日志

2023-11-06

目录

logback简介

为什么使用logback:

开始使用:

1.导入依赖:

2.在项目的resources目录下新建一个logback.xml文件

 3.填入配置

4.项目启动


logback简介

Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-classic完整实现SLF4J API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能。

为什么使用logback:

企业开发中选择logback而不是log4j的理由 - Rollen Holt - 博客园 (cnblogs.com)

开始使用:

1.导入依赖:

其实在实际开发中我们不需要直接添加该依赖,你会发现spring-boot-starter其中包含了spring-boot-starter-logging,该依赖内容就是 Spring Boot 默认的日志框架就是logback。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
</dependency>

2.在项目的resources目录下新建一个logback.xml文件

 3.填入配置

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

    <!-- 定义日志的根目录 -->
    <property name="log.path" value="logs"/>
    <!-- 定义日志文件名称 -->
    <property name="appName" value="docker"/>

    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <!-- 定义日志格式 -->
    <property name="CONSOLE_LOG_PATTERN"
              value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr([%8.8t]){faint} %clr(%-30.30logger{0}){cyan} %clr(%X{requestId}){faint} %clr(%X{userId}){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>

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

    <!--2. 输出到文档-->
    <!-- 2.1 level为 DEBUG 日志,时间滚动输出  -->
    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文档的路径及文档名 -->
        <file>${log.path}/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-%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>

    <!-- 2.2 level为 INFO 日志,时间滚动输出  -->
    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文档的路径及文档名 -->
        <file>${log.path}/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-%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>

    <!-- 2.3 level为 WARN 日志,时间滚动输出  -->
    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文档的路径及文档名 -->
        <file>${log.path}/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-%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>

    <!-- 2.4 level为 ERROR 日志,时间滚动输出  -->
    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文档的路径及文档名 -->
        <file>${log.path}/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-%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>


    <!-- 4. 最终的策略 -->
    <!-- 4.1 开发环境:打印控制台-->
    <springProfile name="dev">
        <logger name="com.sdcm.pmp" 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>

</configuration>

4.项目启动

   项目启动后会自动生成一个logs文件夹包含Debug、Info、Warn、Error四个级别的log文件,可以点击所对应的级别日志文件查看。

Debug:指出细粒度信息事件对调试应用程序是非常有帮助的
Info:消息在粗粒度级别上突出强调应用程序的运行过程
Warn:输出警告及warn以下级别的日志
Error:输出错误信息日志


 

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

springboot集成logback配置文件,配置日志 的相关文章

  • SLF4J 日志记录到文件 vs. DB vs. Solr

    我需要一些关于 SLF4J 日志记录的建议 目前 我们正在为 Java Web 应用程序使用 SLF4J 日志记录 log4j 绑定 该应用程序使用简单的 ConsoleAppender 我们的下一步是研究可以保存日志的地方 我们的应用程序
  • 您能让 Tomcat 6 stdout.log 文件表现得像 log4j DailyRollingFileAppender 吗?

    我们使用的是 Tomcat 6 的 Windows 安装 默认情况下 我们应用程序的 log4j 输出将转到 catalina base logs stdout log 文件 该日志文件仅在我们重新启动 Tomcat 时滚动 并且文件名始终
  • grails 中的 log4j:如何登录文件?

    我的 grails config groovy 中有这个 log4j 配置 log4j error org codehaus groovy grails web servlet controllers org codehaus groovy
  • 覆盖 logback 配置

    有什么方法可以覆盖 logback 配置吗 我知道我们在名为的文件中定义了 logback 配置logback xml 通常存储在路径中src main resources 并且我知道通过使用
  • Spring boot 中特定包的自定义日志文件

    我有一个带有专门操作的java包 专业化是因为它们很少被使用 并且我不想将它们与普通日志记录混合在一起 我知道添加logging file myapplication log会将日志记录重定向到此文件 但有没有办法指定仅从特定包记录到另一个
  • Logback 上下文选择器的实际使用

    Logback 的文档测井分离 http logback qos ch manual loggingSeparation html表明我可以使用上下文选择器 http logback qos ch manual contextSelecto
  • 如何设置 commons-logging 来使用 logback?

    我们使用 slf4j logback 并且碰巧有一些使用 commons logging 的第三方库 如何设置它以使用 logback 答案是不要使用 commons logging jar 因为 SLF4J 的设计目的与 commons
  • log4j.properties 在 Wildfly 上无法正常工作

    我的类路径中有一个 log4j properties 文件 它位于 APP XX jar log4j properties 位置 我注意到在ear文件中我还可以在lib文件夹中找到log4j 1 2 17 jar 但无论我在 log4j p
  • slf4j-log4j12 和 log4j-over-slf4j 之间的区别

    slf4j log4j12 和 有什么区别log4j over slf4j https www slf4j org legacy html log4j over slf4j以及什么时候应该使用它们
  • java:如何设置全局线程ID?

    是否有可能为线程设置唯一ID 在分布式系统中 线程是在许多不同的机器上创建的 例如通过 RMI 我需要它来创建日志消息 根据我的研究 我知道可以使用 log4j mdc ndc 来完成 但只能在单线程中完成 我的问题是 在创建线程时必须设置
  • Logback 配置在单行上有异常吗?

    我的日志被提取 传输并合并到 elasticsearch 中 多行事件很难跟踪和诊断 有没有办法使用收集器和正则表达式将异常行分组到单个记录中登录配置 https logback qos ch manual layouts html xTh
  • 如何使用 log4j 自动记录类中调用的每个方法

    我有一个包含数据库调用的类 我通常希望使用 log4j 记录该类中调用的每个方法 带参数 logger debug foo id id initiated 可以自动执行此操作吗 也许通过在每个方法的开头使用某种注释而不是编写每个 logge
  • 为什么我们在 log4j.xml 中需要 root 和 logger

    如果问题太微不足道 请原谅 我对 log4j 完全陌生 我看到有两个tags和tags 分别指的是各种appender 假设我想将代码库中的信息记录在文件中 将其发送到我的电子邮件并将其打印到控制台 我希望将级别设置为信息 拥有一个引用三个
  • Logback:如何仅将错误记录到文件中

    我已经读了 2 个小时的 logback 手册 但仍然不知道如何做我需要的事情 正如标题所说的那样简单 我只想将错误记录到文件中 并将其他级别 包括错误 记录到控制台 这是我的 logcat xml 文件的根部分
  • Spring Boot、logback 和logging.config 属性

    我正在 Spring Boot 项目中实现日志记录logback图书馆 我想根据我的 Spring 配置文件加载不同的日志配置文件 属性spring pofiles active 我有3个文件 logback dev xml logback
  • logback 未找到 LoginAuthenticator

    我想用logback android 1 1 1 2 jar and slf4j api 1 7 6 jar在我的安卓项目中 但我在 Android Studio 中收到以下错误 无法解析 Lch qos logback core net
  • Log4j:配置 JDBC 附加程序以使用数据源

    我必须配置 JDBC 附加程序才能使用数据源 这可能吗 如果是这样 怎么办 我现在的文件看起来像这样 Define the root logger with file appender log4j rootLogger DEBUG sql
  • 如何抑制 EMR 上运行的 Spark-sql 的 INFO 消息?

    我正在 EMR 上运行 Spark 如中所述在 Amazon Elastic MapReduce 上运行 Spark 和 Spark SQL https aws amazon com articles 4926593393724923 本教
  • java: log4j: jar 可执行文件的问题

    当我从命令行运行 java package Main 时 我的 log4j 工作正常 但是当我使用 java jar myjar jar 等可执行 jar 运行相同的程序时 我收到以下错误 log4j WARN No appenders c
  • 多个 log4j.properties 文件

    这似乎不是一个有效的问题 但我在这里有一个要求 以下是我的项目结构 common built as a jar module 1 war includes common jar in its classpath module 2 war i

随机推荐

  • Virtual Box配置虚拟机网络

    简介 Virtual Box提供了多种网络模式 如图所示 但是我们常用的一般就三种 可以通过以下表格来了解三者区别 虚拟机 gt 主机 主机 gt 虚拟机 虚拟机 gt 其他主机 网络中 Bridged 桥接模式 Y Y Y NAT 网络地
  • MySQL锁机制和锁算法

    文章目录 MyISAM和InnoDB存储引擎锁区别 InnoDB锁机制 InnoDB 表级锁的锁模式 InnoDB 行锁模式及加锁方法 InnoDB 行锁实现方式 乐观锁和悲观锁 悲观锁 乐观锁 间隙锁 gap 锁 恢复和复制的需要 对In
  • 16种重要编程语言概览

    1 LISP 作者 麻省理工学院的人工智能研究先驱约翰 麦卡锡 John McCarthy 发明年代 1958年 应用领域 长期以来垄断人工智能领域的应用 Lisp 最初是作为展示程序的实用模型发布的 在 20 世纪 70 年代和 80 年
  • 黄金交易所可能采用自主监管模型

    点击上方 蓝色字 可关注我们 暴走时评 黄金现货交易涉及面广 因此相关监管一直是重大问题 印度政府已经决定对现货黄金交易所采取自主监管模式 利用区块链技术进行交易记录和黄金交接 而且交易信息加密之后 只有监管机构可以确定访问权 每笔交易有独
  • 脚本定时从服务器上拿文件,shell定时去指定服务器上取日志

    bin bash 生成昨天数字日期 dt date d last day Y m d dat date Y m d H M xg file brcb edp data public edp file ITMS dt 修改脚本 sed i 6
  • cudaEncode编码详细过程

    cudaEncode编码详细过程如下 一 ParseInputParams argc argv sEncoderParams 配置参数 输入 输出文件 配置文件 基本的参数 二 pCudaEncoder new VideoEncoder s
  • 浓缩就是精华

    凡人牧场 人生启示录 被称为世上最经典的25句话 转载 作者 晶晶鱼 提交日期 2003 12 31 15 32 40 记住该记住的 忘记该忘记的 改变能改变的 接受不能改变的 能冲刷一切的除了眼泪 就是时间 以时间来推移感情 时间越长 冲
  • 故障分析

    作者 杨际宁 爱可生 DBA 团队成员 主要负责 MySQL 日常维护 故障处理和性能优化 对技术执着 为客户负责 本文来源 原创投稿 爱可生开源社区出品 原创内容未经授权不得随意使用 转载请联系小编并注明来源 一 背景说明 开发反馈连 r
  • 谷歌牵头呼吁保护开源项目;Firefox 更新后服务器出现 Bug;Rust 1.58.0 发布

    整理 宋彤彤 责编 屠敏 开源吞噬世界的趋势下 借助开源软件 基于开源协议 任何人都可以得到项目的源代码 加以学习 修改 甚至是重新分发 关注 开源日报 一文速览国内外今日的开源大事件吧 一分钟速览新闻点 开源大新闻 为避免重蹈 Log4j
  • 汇编王爽老师实验12,显示0号除法溢出中断

    整个程序不能脱离dosbox 在dosbox中触发中断 本程序的思路是 先编写0号中断子程序 在主程序中运用传送方法把中断子程序传送至内存段 1设置传送的起点2设置传送的终点3设置传送的代码段长度4设置传送的方向5rep 启动传送6修正中断
  • T - 小孩报数问题(python)

    题目 有N个小孩围成一圈 给他们从1开始依次编号 现指定从第W个开始报数 报到第S个时 该小孩出列 然后从下一个小孩开始报数 仍是报到S个出列 如此重复下去 直到所有的小孩都出列 总人数不足S个时将循环报数 求小孩出列的顺序 Input 第
  • linux学习4练习题及答案

    lt lt lt 第四单元练习 gt gt gt 1 在student用户下执行find etc name passwd 命令 并管理其输出要求如下 显示所有正确输出 屏蔽错误输出 保存正确数出到 tmp find out 错误数出到 tm
  • Chrome谷歌浏览器如何截取整个网页长图?

    PC截取局部或整个网页长图 操作步骤 1 浏览器打开需要截图的网页 2 进入调试模式 Windows系统 按F12 苹果IOS系统 按Command Option I 3 打开命令窗口 windows系统 按ctrl shift p 苹果I
  • 云服务器是干什么的

    云服务器的用途 1 放网站 云服务器和vps 独立服务器等一样 是网站空间的一种 因此 云服务器可以分割出虚拟主机 放置和运行网站 并且云服务器由于是建立在云计算基础上 比传统虚拟主机运行更为稳定 速度更快 性价比也更高 2 放应用 不管是
  • javascript 继承(extend)

  • 无法连接服务器ORacle数据库(可以Ping通)

    今天遇到一个怪事 我本机当服务器 开启了oracle的服务 发现其他人无法连接我的数据库 但是能ping通 1 检查端口是否能连接上 测试机 cmd gt telnet 10 0 0 163 1521 提示没有telnet这个命令 解决方法
  • 折半查找(二分查找)

    1 int Binary Search SeqList L int key 在有序表L中查找关键字为key的元素 若存在则返回其位置 不存在则返回 1 int low 0 high L Tablelen 1 mid while low lt
  • postgresql常用命令

    连接数据库 默认的用户和数据库是postgres psql U user d dbname 切换数据库 相当于mysql的use dbname c dbname 列举数据库 相当于mysql的show databases l 列举表 相当于
  • 三、PowerShell-使用帮助系统

    三 PowerShell 使用帮助系统 文章目录 三 PowerShell 使用帮助系统 1 帮助系统使用场景 2 更新帮助系统 3 查看帮助 4 使用帮助系统查找命令 5 帮助详解 1 参数集和通用参数 2 可选和必选参数 3 位置参数
  • springboot集成logback配置文件,配置日志

    目录 logback简介 为什么使用logback 开始使用 1 导入依赖 2 在项目的resources目录下新建一个logback xml文件 3 填入配置 4 项目启动 logback简介 Logback是由log4j创始人设计的又一