MDC到日志管理配置
2024-10-20 08:25:50
MDC是什么?
第一次接触MDC,很蒙圈。看看导入的包import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.slf4j.MDC;它显然和日志管理有关。
slf4j常用的日志接口有哪些?trace、debug、info、warn、error,再加上MDC.
最常见的日志管理会采用这种方式:
private static final Logger log = LoggerFactory.getLogger(类名.class);
log.info();
log.debug();
log.trace();
MDC.put()方法提供了日志输出功能,通过log4j2.xml的layout配置%X{ }即可获得日志,这种方式非常灵活,
允许用户对任何对象进行日志管理。
怎么为应用配置日志管理
日志的输出格式:
<property name="PATTERN">
%X{logId},[%-5level],%d{yyyy-MM-dd HH:mm:ss.SSS},%t,%c{1}: %msg%n
</property>
解析:
- %X{logId}----针对MDC.put("", "")方法。
- [%-5level]----日志的级别
- %d{yyyy-MM-dd HH:mm:ss.SSS}-----时间格式化
- %t ----- 线程
- %c{1} --- 类名
- %msg --- 消息
- %n ------换行
看配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!-- status="OFF",可以去掉,它的含义为是否记录log4j2本身的event信息,默认是OFF -->
<configuration>
<properties>
<!-- 文件输出格式 -->
<property name="PATTERN">
%X{logId},[%-5level],%d{yyyy-MM-dd HH:mm:ss.SSS},%t,%c{1}: %msg%n
</property> <!-- 日志根路径 -->
<property name="BASE_PATH">
/applog/xxxlog
</property> <!-- 应用名 -->
<property name="APP_NAME">
xxx-core
</property> <!-- 日志文件名 -->
<property name="LOG_FILE_NAME">
${BASE_PATH}/${APP_NAME}.log
</property> <!-- 滚动日志文件生成规则 -->
<property name="LOG_FILE_PATTERN">
${BASE_PATH}/${APP_NAME}_%d{yyyyMMddHHmm}-%i.log
</property>
</properties> <!-- xx报文日志级别 -->
<DynamicThresholdFilter key="traceOpen" defaultThreshold="ERROR" onMatch="ACCEPT"
onMismatch="NEUTRAL">
<KeyValuePair key="yes" value="trace" />
</DynamicThresholdFilter> <!-- 日志输出定义 -->
<appenders>
<!-- 滚动日志 -->
<RollingFile name="rollingFileLog" filename="${LOG_FILE_NAME}" filePattern="${LOG_FILE_PATTERN}"
append="true">
<Filters>
过滤掉不符合日志级别的日志
<!-- <ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL" /> -->
只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)
<!-- <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" /> -->
</Filters>
输出日志的格式
<PatternLayout pattern="${PATTERN}" />
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="20 MB" />
</Policies>
滚动日志的策略
<DefaultRolloverStrategy max="50">
<Delete basePath="${BASE_PATH}/" maxDepth="2">
<IfFileName glob="${APP_NAME}_*.log" />
<!--! 这里的age必须和filePattern协调, 后者是精确到HH, 这里就要写成xH, xd就不起作用
另外, 数字最好>2, 否则可能造成删除的时候, 最近的文件还处于被占用状态,导致删除不成功!-->
<!--7天-->
<IfLastModified age="7d" />
<IfAny>
<IfAccumulatedFileSize exceeds="2 GB" />
<IfAccumulatedFileCount exceeds="100" />
</IfAny>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
<!-- 控制台 -->
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="${PATTERN}" />
</Console>
</appenders> <!-- 日志对象定义 -->
<loggers>
<!-- xx日志 -->
<logger name="CoreframeInteractiveLogger" level="info" additivity="true">
<AppenderRef ref="interactiveAppender" />
</logger> <!-- xx日志 -->
<logger name="CoreframeServiceMetricsLogger" level="info" additivity="true">
<AppenderRef ref="serviceMetricsAppender" />
</logger> <!-- 服务框架 -->
<logger name="coreframe" level="info" /> <!-- 应用处理日志 -->
<logger name="Service" level="debug" />
<logger name="" level="debug" /> <!-- 测试日志 -->
<logger name="test" level="trace" />
<logger name="" level="trace" /> <root level="info">
<AppenderRef ref="console" />
<AppenderRef ref="rollingFileLog" />
</root>
</loggers> </configuration>
最新文章
- java语言的I/O操作预习
- JS搞基指南----延迟对象入门提高资料整理
- commonJS — 函数操作(for Function)
- tomcat 启动时内存溢出
- dwr与ssh框架整合教程
- 微信jssdk uploadImage 巨坑
- 1032 - Intersecting Dates
- C++服务器设计(六):设备连接的生命周期管理
- c语言15行实现简易cat命令
- 在Windows下通过压缩包方式安装MySQL
- Spring boot+ logback环境下,日志存放路径未定义的问题
- Flume配置Multiplexing Channel Selector
- <;TCP/IP>;Internet地址结构回顾
- 雷林鹏分享:C# 循环
- 关于ros将opencv版本固定“写死”的一些想法
- Vs2013 如何使用EF6来连接mysql数据库
- CAC的Debian-8-64bit安装BBR正确打开方式
- 自定义泛型_无多态_通配符无泛型数组_jdk7泛型使用
- maven打包 springBoot 工程时,默认识别resources目录,习惯使用 resource 目录的需要手动指定静态资源目录
- AtCoder Grand Contest 004
热门文章
- Linux安装MySql5.7及配置(yum安装)
- 为终端配置proxy
- Python子类调用父类内属性的方法
- robot framework python3环境下学习笔记(1)——安装robot framework
- python+ selenium&;APPium自动化 page Object 设计模式
- ElasticSearch入门 —— 集群搭建
- mysql5.6修改密码并授权所有远程用户可登陆
- Django REST framework JWT学习
- FacertGrid()的使用
- ConfigurationManager.ConnectionStrings 属性