zoukankan      html  css  js  c++  java
  • logback转义符与MDC

    关于MDC的使用,可以结合filter一块使用,将需要串联的上下文的关键信息,通过header进行传递,然后通过配置%X{userId}将信息打印出来。

    MDC.put("userId", userId);
    httpResponse.setHeader("userId", userId);

    关于转义符的描述

    转换符    

     描述

    调用日志事件的所在记录器的名字,如一个logger的名字是my.test.bbb.ccc,调用的是WARN级别的日志输出,那么输出的是输出my.test.bbb.ccc,可以在其右边指定了精度,如%c{2}那么输出的是bbb.ccc

    调用日志事件的所在的类名,和c转换符一样,可以在右边指定宽度,如%C{2}输出%C{2}

    日志调用所发生的时间,日期格式在其后跟着的大括号内的格式指定如%d{yyyy-MM-dd HH:mm:ss},我现在输出的结果是2011-07-11 21:05:22,推荐使用的是log4j本身提供的日期格式,如%d{ISO8601},%d{ABSOLUTE},%d{DATE}

    所处所在文件名,如上面说C转换符的例子,输出结果是LayoutTest.java

    是的日志事件发生的位置信息,这个和虚拟机的实现有点关系,一般境况下能得到类,方法,行数源文件等信息,

    只是输出触发日志事件代码所在的行号,性能损耗会小很多。

    显示应用给日志提供的其他信息,如消息。logger.warn("Message 2");那么%m将得到的是Message 2

    输出调用者所在的方法名

    换行,和 有相同功能,能识别系统的换行符,自动转换成 或者 ,log4j推荐使用这个转换符,而不是 或者

    输出调用的日志的级别,如我是调用logger.debug方法,那么级别就是debug

    输出自应用启动后第一次调用logger的日志输出方法,到输出该log信息耗费的毫秒数

    输出所在线程的名字

    输出产生的日志事件的线程的NDC(嵌套诊断上下文)

    输出与生成的日志事件的线程关联的MDC(映射诊断上下文)。X转换符括号之间放置了一个key,就像在%X {clientNumber}中的clientNumberkey 一样。在MDC correspondingvalue将被输出。

    写上%%后将直接输出一个%符号

    关于Logback配置中支持if添加语句,之所以使用该方式,是因为在工作过程中,需要判断生产环境不让日志打印在catalina文件中,因此通过if条件语句判断操作系统来实现

    需要引入jar

    <dependency>
           <groupId>org.codehaus.janino</groupId>
           <artifactId>janino</artifactId>
           <version>${janino.version}</version>
     </dependency>
    <if condition='property("os.name").contains("Win") | property("os.name").contains("Mac")'>
          <then>
                <appender-ref ref="STDOUT"/>
          </then>
    </if>
  • 相关阅读:
    Python:从入门到实践--第五章--if语句--练习
    Python:从入门到实践--第四章--列表操作--练习
    Python:从入门到实践--第七章--用户输入和while循环-练习
    Python:从入门到实践--第六章--字典--练习
    Python:从入门到实践--第八章-函数-练习
    Python:从入门到实践--第九章-类--练习
    Python:从入门到实践--第十章--文件和异常--练习
    图像灰度变换
    matlab数学实验--第二章
    configparse模块和hashlib模块
  • 原文地址:https://www.cnblogs.com/woniu4/p/10779977.html
Copyright © 2011-2022 走看看