log4j PatternLayout

转载 2015年11月18日 17:13:41

如果想生成基于模式的特定格式的日志信息,那么可以使用 org.apache.log4j.PatternLayout 格式化日志信息。

PatternLayout类扩展抽象 org.apache.log4j.Layout 类并覆盖format()方法根据提供的模式构建日志信息。 

PatternLayout也是一个简单的布局对象,它提供下列Bean属性,可以通过配置文件进行设置:

S.N. 属性和说明
1 conversionPattern
设置转换模式。默认为 %r [%t] %p %c %x - %m%n

模式转换字符:

下表说明了以上模式使用的字符和所有其他字符,可以在自定义模式中使用:

转换字符 表示的意思
c 用于输出的记录事件的类别。例如,对于类别名称"a.b.c" 模式  %c{2} 会输出 "b.c"
C 用于输出呼叫者发出日志请求的完全限定类名。例如,对于类名 "org.apache.xyz.SomeClass", 模式 %C{1} 会输出 "SomeClass".
d 用于输出的记录事件的日期。例如, %d{HH:mm:ss,SSS} 或 %d{dd MMM yyyy HH:mm:ss,SSS}.
F 用于输出被发出日志记录请求,其中的文件名
l 用于将产生的日志事件调用者输出位置信息
L 用于输出从被发出日志记录请求的行号
m 用于输出使用日志事件相关联的应用程序提供的消息
M 用于输出发出日志请求所在的方法名称
n 输出平台相关的行分隔符或文字
p 用于输出的记录事件的优先级
r 用于输出毫秒从布局的结构经过直到创建日志记录事件的数目
t 用于输出生成的日志记录事件的线程的名称
x 用于与产生该日志事件的线程相关联输出的NDC(嵌套诊断上下文)
X 在X转换字符后面是键为的MDC。例如  X{clientIP} 将打印存储在MDC对键clientIP的信息
% 文字百分号 %%将打印%标志

格式修饰符:

默认情况下,相关资料原样输出。然而,随着格式修饰符的帮助下,可以改变最小字段宽度,最大字段宽度和对齐。

下表涵盖了各种各样的修饰符的情况:

Format modifier left justify minimum width maximum width 注释
%20c false 20 none 用空格左垫,如果类别名称少于20个字符长
%-20c true 20 none 用空格右垫,如果类别名称少于20个字符长
%.30c NA none 30 从开始截断,如果类别名称超过30个字符长
%20.30c false 20 30 用空格左侧垫,如果类别名称短于20个字符。但是,如果类别名称长度超过30个字符,那么从开始截断。
%-20.30c true 20 30 用空格右侧垫,如果类别名称短于20个字符。但是,如果类别名称长度超过30个字符,那么从开始截断。

PatternLayout 示例:

以下是针对 PatternLayout 一个简单的配置文件:

# Define the root logger with appender file
log = /usr/home/log4j
log4j.rootLogger = DEBUG, FILE

# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${log}/log.out

# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=
      %d{yyyy-MM-dd}-%t-%x-%-5p-%-10c:%m%n

现在考虑下面产生日志信息的Java例子:

import org.apache.log4j.Logger;

import java.io.*;
import java.sql.SQLException;
import java.util.*;

public class log4jExample{
  /* Get actual class name to be printed on */
  static Logger log = Logger.getLogger(
                      log4jExample.class.getName());

  public static void main(String[] args)
                throws IOException,SQLException{
   
     log.debug("Hello this is an debug message");
     log.info("Hello this is an info message");
  }
}

编译并运行上述程序,它会创建 log.out文件在 /usr/home/log4j 目录,该文件将有如下的日志信息:

2010-03-23-main--DEBUG-log4jExample:Hello this is an debug message
2010-03-23-main--INFO -log4jExample:Hello this is an info message

log4j日志扩展---自定义PatternLayout

目前扩展log4j的日志一般使用扩展adaper的方法,这里使用一种扩展PatternLayout方法. log4j.rootLogger=debug, stdout, R log4j.appe...
  • u010162887
  • u010162887
  • 2016年06月23日 08:39
  • 4539

Log4j扩展使用--日志格式化器Layout

Layout:格式化输出日志信息 OK,前面我已经知道了。Appender必须使用一个与之相关联的Layout,这样才能知道怎样格式化输出日志信息。 日志格式化器Layout负责格式化日志信息,方法...
  • u011794238
  • u011794238
  • 2016年02月23日 01:02
  • 5731

Log4j输出格式控制--log4j的PatternLayout参数含义以及详细配置

做项目被log4j的输出格式化参数搞烦了,索性把API的相关部分大致翻译一下,原文参见http://logging.apache.org/log4j/docs/api/org/apache/log4j...
  • Reserved_person
  • Reserved_person
  • 2016年10月18日 15:38
  • 1214

3.log4j.properties例子:PatternLayout

package com.v512.log4j; import org.apache.log4j.Logger; public class HelloLog4J { // 构造记录器,形参是记录器...
  • seeds_home
  • seeds_home
  • 2012年07月30日 10:08
  • 799

Log4J学习【二十九】常用的Layout之PatternLayout

首先来说说这个pattern,在pattern中,规定格式的总是一个字符,比如上面的r,t,p等,在某些情况下,这些字符可以带一些前缀或者后缀信息来规定额外的格式,这个我们待会再看,并且,所有的代表内...
  • andyzhaojianhui
  • andyzhaojianhui
  • 2014年12月17日 15:12
  • 350

Log4j输出格式控制---PatternLayout参数含义

Log4j输出格式控制---PatternLayout参数含义
  • a52571
  • a52571
  • 2017年07月10日 14:40
  • 185

[log4j] PatternLayout的用法

类似于上一篇文章中, 运行时log如下: 11:29:41.730 [main: 16] INFO HelloWorld - [example] Hello, Wor...
  • u011627789
  • u011627789
  • 2013年09月30日 11:51
  • 787

Log4j输出格式控制--log4j的PatternLayout参数含义

参数 说明 例子 %c 列出logger名字空间的全称,如果加上{}表示列出从最内层算起的指定层数的名字空间 log4j配置文件参数举例 输出显示媒介 假设当前logge...
  • kalman2008
  • kalman2008
  • 2014年04月08日 14:24
  • 434

Log4j输出格式控制--log4j的PatternLayout参数含义

做项目被log4j的输出格式化参数搞烦了,索性把API的相关部分大致翻译一下,原文参见http://logging.apache.org/log4j/docs/api/org/apache/log4j...
  • u012661010
  • u012661010
  • 2017年07月22日 18:13
  • 113

Log4j输出格式控制--log4j的PatternLayout参数含义

做项目被log4j的输出格式化参数搞烦了,索性把API的相关部分大致翻译一下,原文参见http://logging.apache.org/log4j/docs/api/org/apache/log4j...
  • ywb201314
  • ywb201314
  • 2016年03月18日 14:06
  • 415
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:log4j PatternLayout
举报原因:
原因补充:

(最多只允许输入30个字)