当前位置: 首页 > news >正文

logback日志框架使用

依赖引入

<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.1.7</version>
</dependency>

使用logback日志框架只需要引入以上即可,(我们平时使用较多的@Slf4j注解是另外的机制触发)后续会谈到

查看以上的maven依赖项引入如下:

该依赖项引入了:

        slf4j-api

        logback-core

        logback-classic

配置项样列

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false"><property name="LOG_HOME" value="./logs"/><!-- 控制台输出 --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoderclass="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 --><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{5}: - %m%n</pattern>
<!--            <pattern>${COLOR_PATTERN}</pattern>--></encoder></appender><!-- 按照每天生成日志文件 --><appender name="LOGFILE"class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicyclass="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件输出的文件名 --><FileNamePattern>${LOG_HOME}/performance-batch.%d{yyyy-MM-dd}.log</FileNamePattern><!--日志文件保留天数 --><MaxHistory>30</MaxHistory></rollingPolicy><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 --><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}: - %msg%n</pattern></encoder></appender><!--此日志文件只包含错误日志--><appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_HOME}/performance-batch-error.%d{yyyy-MM-dd}.log</fileNamePattern></rollingPolicy><!-- 追加方式记录日志 --><append>true</append><!-- 日志文件的格式 --><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{3}: - %msg%n</pattern><charset>utf-8</charset></encoder><!-- 此日志文件只记录error级别的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>error</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><appender name="LOGFILE_ASYNC" class="ch.qos.logback.classic.AsyncAppender"><appender-ref ref="LOGFILE"/></appender><appender name="LOG_ERROR_FILE_ASYNC" class="ch.qos.logback.classic.AsyncAppender"><appender-ref ref="ERROR"/></appender><logger name="HuaweiCloud-SDK-Access" level="OFF"/><!-- 日志输出级别 --><root level="info"><appender-ref ref="STDOUT"/><appender-ref ref="LOGFILE_ASYNC"/><appender-ref ref="LOG_ERROR_FILE_ASYNC"/></root></configuration>

常用占位符含义

%C = %class【等价】打印全类名 ---不推荐,耗性能
%d = %date【等价】  日期格式可以在后面用{}表示
%F = %file 【等价】 发出日志请求的java源文件名字 ---不推荐,耗性能
%L = %line 【等价】 java文件中请求的行号 ---不推荐,耗性能
%m = %msg = %message  日志正文信息 
%M = %method 日志请求发出的方法的方法名----不推荐,耗性能
%n 换行符
%p = %le = %level【等价】 日志级别  %-5p 表示打印日志级别,且左对齐5个字符的距离
%t = %thread 线程名称
%i 文件序号,在单条日志中不支持,在文件名称处支持

源码浅析

从结构上看,logback的配置解析是从<configuration debug="false">标签开始的,从代码上看入口是:

org.slf4j.impl.StaticLoggerBinder的静态代码块开始的。

从代码上看logback配置文件的优先级如下:

最终会把xml配置内容解析成一个LoggerContext对象,其中的结构关系如下:

每个Logger包含的元素有:名称、日志级别、生效的日志级别、父Logger、子logger列表、一组Appender列表...

未在xml中明确定义的logger的日志输出相关的所有限制继承父类,所有logger的父类是Root

http://www.lryc.cn/news/259028.html

相关文章:

  • 【八】python装饰器模式
  • Unity-小工具-LookAt
  • TCP实现一对一聊天
  • 全面高压化与全面超快充,破解新能源汽车的时代难题
  • 02 CSS基础入门
  • MyBatis框架中的5种设计模式总结
  • ffmpeg相关命令
  • 锂电3V升12V1A升压芯片WT3209
  • Unity 置顶OpenFileDialog文件选择框
  • oomall课堂笔记
  • Qt6.5类库实例大全:QFrame
  • Java 数据结构篇-用数组、堆实现优先级队列
  • Reactor模型
  • 【SpringCloud】通过Redis手动更新Ribbon缓存来解决Eureka微服务架构中服务下线感知的问题
  • 如何做好性能压测?压测环境设计和搭建的7个步骤你知道吗?
  • Qt12.13
  • 目标检测YOLO系列从入门到精通技术详解100篇-【目标检测】SLAM(基础篇)(五)
  • 鸿蒙开发之页面与组件生命周期
  • Kotlin开发之低功耗蓝牙(引用三方库)的详解一
  • 5G/4G工业DTU扬尘在线监测:解决工地扬尘困扰的最佳方案
  • 思源黑体某些字显示成日式中文,太先进了(附解法)
  • .NET医院检验系统LIS源码,使用了oracle数据库,保证数据的隔离和安全性
  • html实现动漫视频网站模板源码
  • python zblog API实现类似XMLRPC/发布文章
  • 后台业务管理系统原型模板,Axure后台组件库(整套后台管理页面)
  • kyuubi整合flink yarn application model
  • 使用openpyxl调整Excel的宽度
  • 前端面试——CSS面经(持续更新)
  • 【C语言】结构体实现位段
  • IEEE RAS 机器人最优控制(Model-based Optimization for Robotics)学习资料