zno2

PatternLayoutEncoder 输出格式

ch.qos.logback.classic.encoder.PatternLayoutEncoder

ch.qos.logback.classic.PatternLayout
ch.qos.logback.core.pattern.PatternLayoutBase
 
PatternLayoutBase.class 代码片段,入口
public void start() {
    if(pattern == null || pattern.length() == 0) {
      addError("Empty or null pattern.");
      return;
    }
    try { 
      Parser<E> p = new Parser<E>(pattern);
      if (getContext() != null) {
        p.setContext(getContext());
      }
      Node t = p.parse();
      this.head = p.compile(t, getEffectiveConverterMap());
      if (postCompileProcessor != null) {
        postCompileProcessor.process(head);
      }
      ConverterUtil.setContextForConverters(getContext(), head);
      ConverterUtil.startConverters(this.head);
      super.start();
    } catch (ScanException sce) {
      StatusManager sm = getContext().getStatusManager();
      sm.add(new ErrorStatus("Failed to parse pattern \"" + getPattern()
          + "\".", this, sce));
    }
  }

 

<pattern> </pattern> 内容结构

... + Token.PERCENT + Token.FORMAT_MODIFIER + Token.SIMPLE_KEYWORD + Token.OPTION + ...

例如:
%-5level
%logger{36}

... 代表 任意多个Token.LITERAL 或者 自身

oken.PERCENT 是 %
Token.FORMAT_MODIFIER 必须是数字,正数代表当前位置(即文本左侧)填充空格,负数代表当前位置相反方向填充空格,数值代表“填充空格至N个字符”,字符串本身长度大于等于N时,不需要填充。

Token.SIMPLE_KEYWORD 是PatternLayout 中定义的字符(对应各自的Converter类)

Token.OPTION 是由第一个“{”开启,第一个“}”结束,例如:
%logger{36}} 中的第二个“}”视为 Token.LITERAL 普通文本
传递多个参数用英文“,”分割,例如:
{opt1,opt2}

Converter 详解

http://logback.qos.ch/manual/layouts.html#conversionWord

1. d/date

DateConverter.class

%date{}                                  yyyy-MM-dd HH:mm:ss,SSS

%date{ISO8601}                      yyyy-MM-dd HH:mm:ss,SSS

%date{SimpleDateFormat}         SimpleDateFormat

2. r/relative

 

3. level/le/p

级别名称 TRACE  DEBUG  INFO  WARN  ERROR

4. t/thread

线程名称

Thread.currentThread().getName();

 

5. lo/logger/c

loggerName

Logger org.slf4j.LoggerFactory.getLogger(Class clazz)
clazz的全限定名称
例如:cn.zno.SomeClazz

6. m/msg/message

FormattedMessage
void org.slf4j.Logger.trace(String format, Object... arguments)
由{} 开启参数,有Object[] 设置参数
例如:
        String s = "sdfsdf";
        int i = 111;
        double d = 22.0;
        Date date = new Date();
        logger.trace("It is trace{}&{}&{}&{}",s,i,d,date);

打印:

It is tracesdfsdf&111&22.0&Wed Sep 09 09:35:55 CST 2015 

7. C/class

logger 位于的类名

8. M/method

打印本次log的直接方法名

9. L/line

new Throwable().getStackTrace()[1].getLineNumber();

logger调用打印方法的位置(.java文件中)

10.F/file

该logger位于哪个.java文件

11. X/mdc

Mapped Diagnostic Contexts (MDC)

映射 诊断 上下文

12. property{key}

%property{key} 等价 ${key}

比如:${spring.application.name}

13. 

posted on 2016-08-06 07:47  zno2  阅读(1641)  评论(0编辑  收藏  举报

导航