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>
       解析:

  1. %X{logId}----针对MDC.put("", "")方法。
  2. [%-5level]----日志的级别
  3. %d{yyyy-MM-dd HH:mm:ss.SSS}-----时间格式化
  4. %t ----- 线程
  5. %c{1} --- 类名
  6. %msg --- 消息
  7. %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到日志管理配置的更多相关文章

  1. Springboot 日志管理配置logback-spring.xml

    几种常见的日志 Log4j:是最早的日志框架,是apach旗下的,可以单独使用,也可配合日志框架JCL使用: Log4j2:apach旗下的关于log4j的升级版: Logback:是基于slf4j接 ...

  2. spring boot日志管理配置

    spring Boot在所有内部日志中使用Commons Logging,但是默认配置也提供了对常用日志的支持,如:Java Util Logging,Log4J,Log4J2和Logback.每种L ...

  3. nginx 日志管理配置详解

    nginx的日志管理 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$statu ...

  4. Nginx日志管理配置

    1.创建日志目录 nginx 的默认日志目录所在硬盘空间可能比较小,所以根据硬盘的空间状况创建日志目录 例如:mkdir /backup/nginx_logs 2.修改nginx配置文件 配置 ngi ...

  5. springboot日志管理+集成log4j

    sprongboot使用的默认日志框架是Logback. 可以在application.properties配置简单日志属性,也可以单独配置logback.xml格式,还可以使用log4j来管理. 下 ...

  6. commons-logging和Log4j 日志管理/log4j.properties配置详解

    commons-logging和Log4j 日志管理 (zz) 什么要用日志(Log)? 这个……就不必说了吧. 为什么不用System.out.println()? 功能太弱:不易于控制.如果暂时不 ...

  7. 【Nginx系列】Nginx虚拟主机的配置核日志管理

    Nginx配置段 #user nobody; worker_processes 1;// 有1个工作的子进程,可以自行修改,但太大无益,因为要争夺CPU,一般设置为 CPU数*核数 #error_lo ...

  8. Spring MVC 中使用AOP 进行统一日志管理--XML配置实现

    1.介绍 上一篇博客写了使用AOP进行统一日志管理的注解版实现,今天写一下使用XML配置实现版本,与上篇不同的是上次我们记录的Controller层日志,这次我们记录的是Service层的日志.使用的 ...

  9. Nginx网络架构实战学习笔记(一):Nginx简介、安装、信号控制、nginx虚拟主机配置、日志管理、location 语法、Rewrite语法详解

    文章目录 nginx简介 nginx安装 nginx信号控制 nginx虚拟主机配置 日志管理 location 语法 精准匹配的一般匹配 正则匹配 总结 Rewrite语法详解 nginx简介 Ng ...

随机推荐

  1. 乱入Spring+Mybatis

    新进入一个项目,写了一个功能,就是提供一个服务(service),该服务能够查询和插入.完成后,想要用junit测试一下:发现到了DAO底层注入的SqlSession字段为空:才意识到这是一个Spri ...

  2. 【MM系列】MB1A MB1B MB1C MB11 MIGO的区别解析

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]MB1A MB1B MB1C MB1 ...

  3. 【MM系列】SAP MM模块-货物移动对标准价的影响

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP MM模块-货物移动对标准价的 ...

  4. 8.FTP后门命令执行----Samba命令执行----VMware安装kali----多终端显示

    FTP后门命令执行 再次声明,最近听闻不得教受工具使用等言论. 我敢打包票,网络空间安全一级学科的老师和学生是不会说这句话的.未知攻,焉知防. 有工具来检测自己和玩弄它,是幸运的. 犯罪者不会给你提供 ...

  5. C语言第十一周作业

        这个作业属于哪个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/computer-scienceclass3-2018/ ...

  6. centos6.9 安装mysql8

    centos6.9 安装 mysql8 # 安装mysql8 1.下载https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.16-2.el6.x86 ...

  7. Java 14 可能带来什么新特性?

    JDK/Java 13 在一个月前已经发布,该版本带来了 5 大新特性,笔者观察到其中的 Text Blocks(文本块)特性似乎被讨论最多. 文本块特性与常见的 Python "" ...

  8. 使用autotools自动生成Makefile并在此之上使用dh-make生成可发布的deb程序包(详解)

    转自:http://blog.csdn.net/longerzone/article/details/12705507 一.前言 本文将介绍如何使用autotools生成一个Makefile文件,并在 ...

  9. Linux文档整理之【Mysql安装与配置】

    最近公司让整理一个Linux安装Mysql的文档.所以就整理了一下,这里将自己整理的详细文档做个笔记. 1.下载Mysql. https://dev.mysql.com/downloads/mysql ...

  10. 表单提交 multipart/form-data 和 x-www-form-urlencoded的区别

    表单提交表单有两种提交方式,POST和GET.通常我们会使用POST方式,一是因为形式上的安全 :二是可以上传文件. 我之前经常忽略掉表单的编码类型,觉得它特别长比较难记,而且不设置也似乎不影响什么. ...