码迷,mamicode.com
首页 > Web开发 > 详细

PatternLayoutEncoder

时间:2016-08-06 08:27:04      阅读:321      评论:0      收藏:0      [点我收藏+]

标签:

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

线程名称

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

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

10.F/file

该logger位于哪个.java文件

11. X/mdc

Mapped Diagnostic Contexts (MDC)

映射 诊断 上下文

12. 等等

PatternLayoutEncoder

标签:

原文地址:http://www.cnblogs.com/zno2/p/4792636.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!