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 ------换行

看配置文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- status="OFF",可以去掉,它的含义为是否记录log4j2本身的event信息,默认是OFF -->
  3. <configuration>
  4. <properties>
  5. <!-- 文件输出格式 -->
  6. <property name="PATTERN">
  7. %X{logId},[%-5level],%d{yyyy-MM-dd HH:mm:ss.SSS},%t,%c{1}: %msg%n
  8. </property>
  9.  
  10. <!-- 日志根路径 -->
  11. <property name="BASE_PATH">
  12. /applog/xxxlog
  13. </property>
  14.  
  15. <!-- 应用名 -->
  16. <property name="APP_NAME">
  17. xxx-core
  18. </property>
  19.  
  20. <!-- 日志文件名 -->
  21. <property name="LOG_FILE_NAME">
  22. ${BASE_PATH}/${APP_NAME}.log
  23. </property>
  24.  
  25. <!-- 滚动日志文件生成规则 -->
  26. <property name="LOG_FILE_PATTERN">
  27. ${BASE_PATH}/${APP_NAME}_%d{yyyyMMddHHmm}-%i.log
  28. </property>
  29. </properties>
  30.  
  31. <!-- xx报文日志级别 -->
  32. <DynamicThresholdFilter key="traceOpen" defaultThreshold="ERROR" onMatch="ACCEPT"
  33. onMismatch="NEUTRAL">
  34. <KeyValuePair key="yes" value="trace" />
  35. </DynamicThresholdFilter>
  36.  
  37. <!-- 日志输出定义 -->
  38. <appenders>
  39. <!-- 滚动日志 -->
  40. <RollingFile name="rollingFileLog" filename="${LOG_FILE_NAME}" filePattern="${LOG_FILE_PATTERN}"
  41. append="true">
  42. <Filters>
  43. 过滤掉不符合日志级别的日志
  44. <!-- <ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL" /> -->
  45. 只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)
  46. <!-- <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" /> -->
  47. </Filters>
  48. 输出日志的格式
  49. <PatternLayout pattern="${PATTERN}" />
  50. <Policies>
  51. <TimeBasedTriggeringPolicy />
  52. <SizeBasedTriggeringPolicy size="20 MB" />
  53. </Policies>
  54. 滚动日志的策略
  55. <DefaultRolloverStrategy max="50">
  56. <Delete basePath="${BASE_PATH}/" maxDepth="2">
  57. <IfFileName glob="${APP_NAME}_*.log" />
  58. <!--! 这里的age必须和filePattern协调, 后者是精确到HH, 这里就要写成xH, xd就不起作用
  59. 另外, 数字最好>2, 否则可能造成删除的时候, 最近的文件还处于被占用状态,导致删除不成功!-->
  60. <!--7天-->
  61. <IfLastModified age="7d" />
  62. <IfAny>
  63. <IfAccumulatedFileSize exceeds="2 GB" />
  64. <IfAccumulatedFileCount exceeds="100" />
  65. </IfAny>
  66. </Delete>
  67. </DefaultRolloverStrategy>
  68. </RollingFile>
  69. <!-- 控制台 -->
  70. <Console name="console" target="SYSTEM_OUT">
  71. <PatternLayout pattern="${PATTERN}" />
  72. </Console>
  73. </appenders>
  74.  
  75. <!-- 日志对象定义 -->
  76. <loggers>
  77. <!-- xx日志 -->
  78. <logger name="CoreframeInteractiveLogger" level="info" additivity="true">
  79. <AppenderRef ref="interactiveAppender" />
  80. </logger>
  81.  
  82. <!-- xx日志 -->
  83. <logger name="CoreframeServiceMetricsLogger" level="info" additivity="true">
  84. <AppenderRef ref="serviceMetricsAppender" />
  85. </logger>
  86.  
  87. <!-- 服务框架 -->
  88. <logger name="coreframe" level="info" />
  89.  
  90. <!-- 应用处理日志 -->
  91. <logger name="Service" level="debug" />
  92. <logger name="" level="debug" />
  93.  
  94. <!-- 测试日志 -->
  95. <logger name="test" level="trace" />
  96. <logger name="" level="trace" />
  97.  
  98. <root level="info">
  99. <AppenderRef ref="console" />
  100. <AppenderRef ref="rollingFileLog" />
  101. </root>
  102. </loggers>
  103.  
  104. </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. 移动端自动化==>AppiumApi接口详解

    Appium 初始化配置信息(Desired Capabilities) Desired Capabilities实际上就是一个字典,它主要用于向Appium Server提供初始化配置参数,如:想要 ...

  2. 实体类的[Serializable]标签造成WebAPI Post接收不到值

    WebAPI: [HttpPost] public HttpResponseMessage test([FromBody]List<Class1> list) { return Commo ...

  3. 2d平台怪物逻辑

    2d来回巡逻 遇到坑会自动转向 可配置单次方向行走的时间,转向等待时间等 using System; using System.Collections; using System.Collection ...

  4. Sql 把Xml字符串转换成一张表

    分享一个Sql技巧,把xml字符串转换成一个表格 DECLARE @IdHandel INT EXEC sp_xml_preparedocument @IdHandel OUTPUT, @Bar_Ip ...

  5. 浅谈JVM及原理

    前言 JVM一直是java知识里面进阶阶段的重要部分,如果希望在java领域研究的更深入,则JVM则是如论如何也避开不了的话题,本系列试图通过简洁易读的方式,讲解JVM必要的知识点. 运行流程 我们都 ...

  6. 使用bat脚本进行开机启动批处理

    @echo off//关闭提示信息 start /b "F:\newProject\project\Kinect\Kinect\bin\Debug\" /min Kinect.ex ...

  7. Linux运维的第三周总结

    01. 下列文件中, 包含了主机名到IP地址的映射关系的文件是()       A. /etc/HOSTNAME    B. /etc/hosts    C. /etc/resolv.conf    ...

  8. 【监控笔记】【1.3】监控事件系列——SQL Trace(黑盒跟踪 BlackBox Trace)

    [1]它跟踪了哪些事件? (1.1)存储过程执行(SP:Strating) (1.2)T-SQL执行(SQL:BatchString) (1.3)错误和警告(Exception,Attention) ...

  9. P1079Vigenère密码

    这是2012年noip提高组的的DAY1T1,我用了一下午的时间,一次性AC^^. 这是一个字符串的模拟题.首先给出了一个密码对应法则,我们发现在同一对角线的明文通过密钥得出来的密文是相同的.根据八皇 ...

  10. Linux 環境下安裝swoole

    一.先安装依赖 yum -y install gcc gcc-c++ autoconf automake yum -y install zlib zlib-devel openssl openssl- ...