Log4J学习【七】Log4J的体系结构之docLayout的结构

来源:互联网 发布:南京java公司招聘 编辑:程序博客网 时间:2024/04/30 02:45
Logger规定了输出什么日志,Appender规定了日志输出到哪里,当然,我们还会奢望,以什么样的方式输出日志。这就涉及到之前我们在观察Appender的时候创建ConsoleAppender和FileAppender都需要传入的Layout。在Log4J中,Layout对象提供了以什么样的方式格式化日志。这个对象是绑定在Appender之上的,一般在Appender创建的时候指定。
    下面就简单看一个最常使用的Layout:PatternLayout。PatternLayout允许使用标准的输出格式来指定格式化日志消息的样式。举个简单的例子,可能之前大家看到的使用BasicConfigurator配置的rootLogger输出的日志样式和我们使用ConsoleAppender(new SimpleLayout)创建的输出样式完全不一样。那到底类似
0 [main] INFO cd.itcast.core.LogicProcessor  - process some logic
    这样的日志输出样式是什么样子的呢?一个代码:
@Test
public void testPatternLayout(){
    Logger log=Logger.getLogger("cd");
    String pattern="%r [%t] %-5p %c - %m%n";
    log.addAppender(new ConsoleAppender(new PatternLayout(pattern)));
    Logger log2=Logger.getLogger("cd.itcast.log");
    log2.info("log2 info");
}

    运行测试输出:
0 [main] INFO  cd.itcast.log - log2 info
    符合我们的预期。注意粗体字。首先定义了一个格式化日志的模式,在这个模式中,有很多以%开头的参数,每一个特定的参数代表着一种日志的内容。比如%r代表从Log4j启动到运行这条日志的时间差,单位为毫秒;第二个参数%t代表运行该日志的线程名称;第三个参数%-5p,首先-5代表这个字符总占用5个位置,p代表日志输出级别;%c代表输出日志的Logger的名字;%m代表输出的日志内容;%n代表分行。可以看到,其实PatternLayout的使用是非常简单的,只需要了解所有内置的参数和其表示的含义,再按照想要的方式输出即可。
0 0
原创粉丝点击