Logback日志框架配置使用

这篇具有很好参考价值的文章主要介绍了Logback日志框架配置使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、简述

Logback一个通用、快速而又灵活的Java日志框架。主要分为三个模块组成

  • logback-core: 其他两个模块的基础模块
  • logback-classic: 由log4j的改良版本,完整实现了slf4j的API,所以可以很方便的更换成其他日志系统如log4j或者JDK14 Logging
  • logback-access:访问模块和Servlet容器集成提供通过Http来访问日志的功能

二、文件引用

通常情况下,并不需要在pom.xml文件中显式添加logback的Maven依赖。因为SpringBoot默认使用Spring Boot Starter依赖项来管理日志记录,里面包含了logback的依赖,并且也做了相关的默认日志设置。

如果想自定义配置,可以在src/main/resources目录下添加logback-spring.xml(官方推荐的名字,而不是logback.xml)的配置文件,SpringBoot会自动加载,如果想使用其他名称可以在配置处指定

logging.config=classpath:logback.xml

三、标签说明使用

3.1、<property>声明变量,方便后面引用
<property name="log.path" value="logs/gateway"/>

这样就声明了一个log.path的变量,想要使用则${log.path}

3.2、<appender>自定义和配置日志输出目标

在Logback 中使用<appender>来指定日志输出位置和格式等等,可以将日志输出到不同的目标,如控制台,文件,数据库等。

  • name 用来指定appender的名称,在配置文件中是唯一标识

  • class :用来指定实现类,Logback提供了多种自带的实现类,如:

    • ConsoleAppender控制台输出
    • FileAppender 或者RollingFileAppender文件输出
    • DBAppender 数据库
  • 其他配置项

    根据实现不同的类,可以设置有些相关的配置项,如文件路径,输出格式,滚动策略等。

3.3、<encoder>日志编码器标签
<encoder>
	<pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>
</encoder>
  • encoder 标签是Logback 配置文件中用于定义和配置日志事件的编码器的标签

  • patternencoder重要的配置项,用来指定日志输出格式,包括日期时间、日志级别、线程信息、日志内容等等。常用的占位符有:

    占位符 说明
    %d 日期时间
    %level 日志级别,如 DEBUG、INFO、WARN、ERROR 等
    %logger 日志记录器的名称
    %thread 线程名称
    %msg 日志消息内容
    %n 换行符
    %class 出日志所在类的名称
    %file 日志所在文件名
    %line 所在日志行号
    其他
3.4、<logger>指定日志级别
<logger name="com.learn" level="debug"/>

<logger> 可以为不同的包或者类设置不同的日志级别

3.5、<filter>指定日志级别
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
    <level>ERROR</level>
</filter>

<filter> 标签用于定义过滤器,它可以用于对特定的日志事件进行筛选和处理。过滤器可根据指定的条件决定是否传递或忽略某个日志事件。

logback 提供了多种类型的过滤器,每种类型都有相应的配置属性。以下是一些常见的过滤器类型及其作用:

  • ThresholdFilter(阈值过滤器):根据日志事件的级别进行过滤,只传递满足指定级别要求的事件。

  • LevelFilter(级别过滤器):允许或拒绝特定的日志级别。可以设置最小和最大级别,只保留在范围内的日志事件。

  • TimeFilter(时间过滤器):根据日志事件的时间戳进行过滤,只传递在指定时间范围内的事件。

  • MarkerFilter(标记过滤器):根据事件的标记(Marker)进行过滤,只传递符合指定标记要求的事件。

    <filter class="ch.qos.logback.classic.filter.MarkerFilter">
          <!-- 指定需要接受的 Marker 名称 -->
          <marker>MY_MARKER</marker>
          <!-- 设置 onMatch 和 onMismatch 的操作 -->
          <onMatch>ACCEPT</onMatch>
          <onMismatch>DENY</onMismatch>
        </filter>
    
     // 获取日志记录器
      private static final Logger logger = LoggerFactory.getLogger(MyApp.class);
    
      // 创建自定义标记
      private static final Marker MY_MARKER = MarkerFactory.getMarker("MY_MARKER");
    
      public static void main(String[] args) {
        // 输出具有自定义标记的日志事件
        logger.info(MY_MARKER, "This log event has the MY_MARKER marker");
      }
    
3.6、<root> 全局日志配置
  <root level="INFO">
    <!-- 将日志事件输出到控制台 -->
    <appender-ref ref="CONSOLE" />
    <appender-ref ref="debug"/>
  </root>

<root> 标签用来定义跟日志记录器的配置。这里指定了INFO的级别是指日志记录的级别,在日志级别中它与<logger>相比,<logger>的优先级更高。

并且可以为根日志记录器定义多个输出目标(appender),以将日志事件发送到不同的地方,如控制台、文件、数据库等。

3.7、<springProfile> 不同环境配置
<springProfile name="dev">
   <logger name="com.learn" level="debug"/>
   <!-- Level: FATAL 0  ERROR 3  WARN 4  INFO 6  DEBUG 7 -->
   <root level="INFO">
      <appender-ref ref="console"/>
      <appender-ref ref="debug"/>
      <appender-ref ref="error"/>
   </root>
</springProfile>

<springProfile> 标签是 Logback 提供的特殊标签

在SpringBoot中每个环境有不同的配置参数,logback日志管理也支持多环境参数配置,与Spring Profile 关联起来,根据当前的环境决定是否加载特定的日志输出配置。

四、一些常用的配置

4.1、彩色日志依赖
<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"/>

这里只是设置了彩色打印日志的依赖,但并还没有设置,需要在日志打印格式里配置文章来源地址https://www.toymoban.com/news/detail-668425.html

<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>${CONSOLE_LOG_PATTERN}</pattern>
		</encoder>
</appender>
4.2、RollingFileAppender滚筒日志文件输出
	<appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${log.path}/debug.log</file>
		<!--当触发指定条件时,决定RollingFileAppender的行为,涉及文件移动和重命名。属性class定义具体的滚动策略类。-->
		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<fileNamePattern>${log.path}/%d{yyyyMMdd}/debug.%i.log</fileNamePattern>
			<maxFileSize>20MB</maxFileSize>
			<maxHistory>15</maxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>
		</encoder>
	</appender>

五、实例

<?xml version="1.0" encoding="UTF-8"?>

<configuration debug="false" scan="false">
	<property name="log.path" value="logs/gateway"/>
	<!-- 彩色日志格式 -->
	<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}}"/>
	<!-- 彩色日志依赖的渲染类 -->
	<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"/>
	<!-- Console log output -->
	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>${CONSOLE_LOG_PATTERN}</pattern>
		</encoder>
	</appender>

	<!-- Log file debug output -->
	<appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${log.path}/debug.log</file>
		<!--当触发指定条件时,决定RollingFileAppender的行为,涉及文件移动和重命名。属性class定义具体的滚动策略类。-->
		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<fileNamePattern>${log.path}/%d{yyyyMMdd}/debug.%i.log</fileNamePattern>
			<maxFileSize>20MB</maxFileSize>
			<maxHistory>15</maxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>
		</encoder>
	</appender>

	<!-- Log file error output -->
	<appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${log.path}/error.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<fileNamePattern>${log.path}/%d{yyyy-MM}/error.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
			<maxFileSize>50MB</maxFileSize>
			<maxHistory>30</maxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>ERROR</level>
		</filter>
	</appender>



	<springProfile name="dev">
		<logger name="com.learn" level="debug"/>
		<!-- Level: FATAL 0  ERROR 3  WARN 4  INFO 6  DEBUG 7 -->
		<root level="INFO">
			<appender-ref ref="console"/>
			<appender-ref ref="debug"/>
			<appender-ref ref="error"/>
		</root>
	</springProfile>


</configuration>

到了这里,关于Logback日志框架配置使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • springboot中logback日志配置

    Spring Boot使用Apache的Commons Logging作为内部的日志框架,其仅仅是一个日志接口,在实际应用中需要为该接口来指定相应的日志实现。 Spring Boot从1.4版本开始内置的日志框架就是Logback;Spring Boot 2.x 默认采用了slf4j+logback的形式,slf4j也是个通用的日志门面。 SpringBoot可以适配所有

    2024年02月16日
    浏览(48)
  • SpringBoot多环境配置与添加logback日志

    一个项目会有多个运行环境 所以SpringBoot提供了可以适应多个环境的配置文件  每个文件对应一个端口号 application-dev.yml 开发环境 端口8090 application-test.yml 测试环境 端口8091 application-prod.yml 生产环境 端口8092 在application中选择使用哪个端口号 每个文件设置端口号: 2、添加lo

    2024年01月17日
    浏览(52)
  • Springboot日志框架logback与log4j2

    目录 Springboot日志使用 Logback日志 日志格式 自定义日志格式 日志文件输出 Springboot启用log4j2日志框架 Springboot底层是使用slf4j+logback的方式进行日志记录 trace:级别最低 debug:调试级别的,常用于跟踪程序的进展 info:普通的打印信息(默认的日志级别) warn:警告级别,不影响

    2024年01月19日
    浏览(46)
  • 6.3 SpringBoot日志进阶实战 Logback配置详解

    在上一篇文章中,我和你介绍了SpringBoot快速入门Slf4j + Logback实战,遗留的问题是如何将日志输出到文件。 今天这篇文章分享了我在SpringBoot中使用Logback配置日志的经验和方法,并提供了详细的代码示例和解释,包括: 滚动文件、异步日志记录、动态指定属性、日志级别、配

    2024年02月07日
    浏览(52)
  • springboot+mybatis 配置 logback 日志 并打印sql

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 springboot + logback 日志 提示:以下是本篇文章正文内容,下面案例可供参考 ` 使用时注意: 配置日志文件保存路径 默认用户目录 自定义指定需要打印日志的文件路径 参考连接: 很详细 是干货 SpringBoo

    2024年02月19日
    浏览(50)
  • SpringBoot项目从0到1配置logback日志打印

    大家好!我是sum墨,一个一线的底层码农,平时喜欢研究和思考一些技术相关的问题并整理成文,限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。 以下是正文! 我们在写后端项目的时候,日志打印是必需的。支持SpringBoot项目的日志框架一般有log4j、logback,

    2024年02月11日
    浏览(56)
  • springboot Logback 不同环境,配置不同的日志输出路径

    mac 笔记本开发,日志文件写到/data/logs/下,控制台报出:Failed to create parent directories for [/data/logs/........... 再去手动在命令窗口创建文件夹data,报Read-only file system resource 目录下的配置文件列表: 在logback-spring.xml添加配置, 只有local写到当前项目下的data目录,其他环境写到系统

    2024年04月23日
    浏览(43)
  • SpringBoot集成slf4j日志和logback.xml配置详解

    slf4j,即(Simple Logging Facade for Java,简单门面日志)。它是对所有日志框架制定的一种 规范、标准、接口 ,并不是一个框架的具体的实现,它只服务于各种各样的日志系统。 slf4j提供了统一的记录日志的接口,对不同日志系统的具体实现进行了抽象化,只要按照其提供的方法记

    2024年02月03日
    浏览(72)
  • 【日志技术——Logback日志框架】

    1.引出 我们通常展示信息使用的是输出语句,但它有弊端,只能在控制台展示信息,不能灵活的指定日志输出的位置(文件,数据库),想加入或取消日志,需要修改源代码 2.日志技术 可以将系统执行的信息,方便的记录到指定的位置(控制台、文件中、数据库中) 可以随

    2024年02月09日
    浏览(36)
  • Java Logback日志框架概述及logback.xml详解

    日志技术具备的优势 可以将系统执行的信息选择性的记录到指定的位置(控制台、文件中、数据库中)。· 可以随时以开关的形式控制是否记录日志,无需修改源代码。 日志体系结构 Logback日志框架 Logback是由log4j创始人设计的另一个开源日志组件,性能比log4j要好 Logback是基于

    2024年02月10日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包