MDC到日志管理配置
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>
MDC到日志管理配置的更多相关文章
- Springboot 日志管理配置logback-spring.xml
几种常见的日志 Log4j:是最早的日志框架,是apach旗下的,可以单独使用,也可配合日志框架JCL使用: Log4j2:apach旗下的关于log4j的升级版: Logback:是基于slf4j接 ...
- spring boot日志管理配置
spring Boot在所有内部日志中使用Commons Logging,但是默认配置也提供了对常用日志的支持,如:Java Util Logging,Log4J,Log4J2和Logback.每种L ...
- nginx 日志管理配置详解
nginx的日志管理 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$statu ...
- Nginx日志管理配置
1.创建日志目录 nginx 的默认日志目录所在硬盘空间可能比较小,所以根据硬盘的空间状况创建日志目录 例如:mkdir /backup/nginx_logs 2.修改nginx配置文件 配置 ngi ...
- springboot日志管理+集成log4j
sprongboot使用的默认日志框架是Logback. 可以在application.properties配置简单日志属性,也可以单独配置logback.xml格式,还可以使用log4j来管理. 下 ...
- commons-logging和Log4j 日志管理/log4j.properties配置详解
commons-logging和Log4j 日志管理 (zz) 什么要用日志(Log)? 这个……就不必说了吧. 为什么不用System.out.println()? 功能太弱:不易于控制.如果暂时不 ...
- 【Nginx系列】Nginx虚拟主机的配置核日志管理
Nginx配置段 #user nobody; worker_processes 1;// 有1个工作的子进程,可以自行修改,但太大无益,因为要争夺CPU,一般设置为 CPU数*核数 #error_lo ...
- Spring MVC 中使用AOP 进行统一日志管理--XML配置实现
1.介绍 上一篇博客写了使用AOP进行统一日志管理的注解版实现,今天写一下使用XML配置实现版本,与上篇不同的是上次我们记录的Controller层日志,这次我们记录的是Service层的日志.使用的 ...
- Nginx网络架构实战学习笔记(一):Nginx简介、安装、信号控制、nginx虚拟主机配置、日志管理、location 语法、Rewrite语法详解
文章目录 nginx简介 nginx安装 nginx信号控制 nginx虚拟主机配置 日志管理 location 语法 精准匹配的一般匹配 正则匹配 总结 Rewrite语法详解 nginx简介 Ng ...
随机推荐
- 移动端自动化==>AppiumApi接口详解
Appium 初始化配置信息(Desired Capabilities) Desired Capabilities实际上就是一个字典,它主要用于向Appium Server提供初始化配置参数,如:想要 ...
- 实体类的[Serializable]标签造成WebAPI Post接收不到值
WebAPI: [HttpPost] public HttpResponseMessage test([FromBody]List<Class1> list) { return Commo ...
- 2d平台怪物逻辑
2d来回巡逻 遇到坑会自动转向 可配置单次方向行走的时间,转向等待时间等 using System; using System.Collections; using System.Collection ...
- Sql 把Xml字符串转换成一张表
分享一个Sql技巧,把xml字符串转换成一个表格 DECLARE @IdHandel INT EXEC sp_xml_preparedocument @IdHandel OUTPUT, @Bar_Ip ...
- 浅谈JVM及原理
前言 JVM一直是java知识里面进阶阶段的重要部分,如果希望在java领域研究的更深入,则JVM则是如论如何也避开不了的话题,本系列试图通过简洁易读的方式,讲解JVM必要的知识点. 运行流程 我们都 ...
- 使用bat脚本进行开机启动批处理
@echo off//关闭提示信息 start /b "F:\newProject\project\Kinect\Kinect\bin\Debug\" /min Kinect.ex ...
- Linux运维的第三周总结
01. 下列文件中, 包含了主机名到IP地址的映射关系的文件是() A. /etc/HOSTNAME B. /etc/hosts C. /etc/resolv.conf ...
- 【监控笔记】【1.3】监控事件系列——SQL Trace(黑盒跟踪 BlackBox Trace)
[1]它跟踪了哪些事件? (1.1)存储过程执行(SP:Strating) (1.2)T-SQL执行(SQL:BatchString) (1.3)错误和警告(Exception,Attention) ...
- P1079Vigenère密码
这是2012年noip提高组的的DAY1T1,我用了一下午的时间,一次性AC^^. 这是一个字符串的模拟题.首先给出了一个密码对应法则,我们发现在同一对角线的明文通过密钥得出来的密文是相同的.根据八皇 ...
- Linux 環境下安裝swoole
一.先安装依赖 yum -y install gcc gcc-c++ autoconf automake yum -y install zlib zlib-devel openssl openssl- ...