`

log4j布局PatternLayout详细手册

阅读更多

转载自    log4j官网  http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html

 

org.apache.log4j 
Class PatternLayout

java.lang.Object
  extended by org.apache.log4j.Layout
      extended by org.apache.log4j.PatternLayout
All Implemented Interfaces:
OptionHandler

public class PatternLayout
extends Layout

A flexible layout configurable with pattern string.

The goal of this class is to format a LoggingEvent and return the results as a String. The results depend on the conversion pattern.

The conversion pattern is closely related to the conversion pattern of the printf function in C. A conversion pattern is composed of literal text and format control expressions called conversion specifiers.

You are free to insert any literal text within the conversion pattern.

Each conversion specifier starts with a percent sign (%) and is followed by optional format modifiers and a conversion character. The conversion character specifies the type of data, e.g. category, priority, date, thread name. The format modifiers control such things as field width, padding, left and right justification. The following is a simple example.

Let the conversion pattern be "%-5p [%t]: %m%n" and assume that the log4j environment was set to use a PatternLayout. Then the statements

   Category root = Category.getRoot();
   root.debug("Message 1");
   root.warn("Message 2");
   

would yield the output

   DEBUG [main]: Message 1
   WARN  [main]: Message 2
   

Note that there is no explicit separator between text and conversion specifiers. The pattern parser knows when it has reached the end of a conversion specifier when it reads a conversion character. In the example above the conversion specifier %-5p means the priority of the logging event should be left justified to a width of five characters. The recognized conversion characters are

 

Conversion Character Effect
c Used to output the category of the logging event. The category conversion specifier can be optionally followed by precision specifier, that is a decimal constant in brackets.

If a precision specifier is given, then only the corresponding number of right most components of the category name will be printed. By default the category name is printed in full.

For example, for the category name "a.b.c" the pattern %c{2} will output "b.c".

C Used to output the fully qualified class name of the caller issuing the logging request. This conversion specifier can be optionally followed by precision specifier, that is a decimal constant in brackets.

If a precision specifier is given, then only the corresponding number of right most components of the class name will be printed. By default the class name is output in fully qualified form.

For example, for the class name "org.apache.xyz.SomeClass", the pattern %C{1} will output "SomeClass".

WARNING Generating the caller class information is slow. Thus, it's use should be avoided unless execution speed is not an issue.

d Used to output the date of the logging event. The date conversion specifier may be followed by a date format specifier enclosed between braces. For example, %d{HH:mm:ss,SSS} or%d{dd MMM yyyy HH:mm:ss,SSS}. If no date format specifier is given then ISO8601 format is assumed.

The date format specifier admits the same syntax as the time pattern string of the SimpleDateFormat. Although part of the standard JDK, the performance of SimpleDateFormat is quite poor.

For better results it is recommended to use the log4j date formatters. These can be specified using one of the strings "ABSOLUTE", "DATE" and "ISO8601" for specifying AbsoluteTimeDateFormatDateTimeDateFormat and respectively ISO8601DateFormat. For example, %d{ISO8601} or %d{ABSOLUTE}.

These dedicated date formatters perform significantly better than SimpleDateFormat.

F Used to output the file name where the logging request was issued.

WARNING Generating caller location information is extremely slow. It's use should be avoided unless execution speed is not an issue.

l Used to output location information of the caller which generated the logging event.

The location information depends on the JVM implementation but usually consists of the fully qualified name of the calling method followed by the callers source the file name and line number between parentheses.

The location information can be very useful. However, it's generation is extremely slow. It's use should be avoided unless execution speed is not an issue.

L Used to output the line number from where the logging request was issued.

WARNING Generating caller location information is extremely slow. It's use should be avoided unless execution speed is not an issue.

m Used to output the application supplied message associated with the logging event.
M Used to output the method name where the logging request was issued.

WARNING Generating caller location information is extremely slow. It's use should be avoided unless execution speed is not an issue.

n Outputs the platform dependent line separator character or characters.

This conversion character offers practically the same performance as using non-portable line separator strings such as "\n", or "\r\n". Thus, it is the preferred way of specifying a line separator.

p Used to output the priority of the logging event.
r Used to output the number of milliseconds elapsed from the construction of the layout until the creation of the logging event.
t Used to output the name of the thread that generated the logging event.
x Used to output the NDC (nested diagnostic context) associated with the thread that generated the logging event.
X

Used to output the MDC (mapped diagnostic context) associated with the thread that generated the logging event. The X conversion character must be followed by the key for the map placed between braces, as in%X{clientNumber} where clientNumber is the key. The value in the MDC corresponding to the key will be output.

See MDC class for more details.

% The sequence %% outputs a single percent sign.

By default the relevant information is output as is. However, with the aid of format modifiers it is possible to change the minimum field width, the maximum field width and justification.

The optional format modifier is placed between the percent sign and the conversion character.

The first optional format modifier is the left justification flag which is just the minus (-) character. Then comes the optional minimum field width modifier. This is a decimal constant that represents the minimum number of characters to output. If the data item requires fewer characters, it is padded on either the left or the right until the minimum width is reached. The default is to pad on the left (right justify) but you can specify right padding with the left justification flag. The padding character is space. If the data item is larger than the minimum field width, the field is expanded to accommodate the data. The value is never truncated.

This behavior can be changed using the maximum field width modifier which is designated by a period followed by a decimal constant. If the data item is longer than the maximum field, then the extra characters are removed from the beginning of the data item and not from the end. For example, it the maximum field width is eight and the data item is ten characters long, then the first two characters of the data item are dropped. This behavior deviates from the printf function in C where truncation is done from the end.

Below are various format modifier examples for the category conversion specifier.

 

Format modifier left justify minimum width maximum width comment
%20c false 20 none Left pad with spaces if the category name is less than 20 characters long.
%-20c true 20 none Right pad with spaces if the category name is less than 20 characters long.
%.30c NA none 30 Truncate from the beginning if the category name is longer than 30 characters.
%20.30c false 20 30 Left pad with spaces if the category name is shorter than 20 characters. However, if category name is longer than 30 characters, then truncate from the beginning.
%-20.30c true 20 30 Right pad with spaces if the category name is shorter than 20 characters. However, if category name is longer than 30 characters, then truncate from the beginning.

Below are some examples of conversion patterns.

 

%r [%t] %-5p %c %x - %m%n

 

This is essentially the TTCC layout.

 

%-6r [%15.15t] %-5p %30.30c %x - %m%n

 

Similar to the TTCC layout except that the relative time is right padded if less than 6 digits, thread name is right padded if less than 15 characters and truncated if longer and the category name is left padded if shorter than 30 characters and truncated if longer.

The above text is largely inspired from Peter A. Darnell and Philip E. Margolis' highly recommended book "C -- a Software Engineering Approach", ISBN 0-387-97389-3.

 

 

Since:
0.8.2
Author:
James P. Cakalic, Ceki Gülcü

 

分享到:
评论

相关推荐

    log4j日志驱动包

    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n #log4j.appender.CONSOLE.layout....

    Log4j日志包

    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n #log4j.appender.CONSOLE.layout....

    log4j配置文件

    log4j.rootLogger=info, stdout, log, errorlog ...log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} [ %t ] [ %p ]:%L - %m%n

    log4j-1.2.9

    log4j.appender.A1.layout = org.apache.log4j.PatternLayout 格式具体值: %m 日志信息 %d 日期,可格式化 %c 目标类的名称 %l 所处目标类的行数 %r 发生异常到输出完成所使用的时间(毫秒) %p 输出日志的等级 %t...

    log4j-1.2.14

    log4j.appender.A1.layout = org.apache.log4j.PatternLayout 格式具体值: %m 日志信息 %d 日期,可格式化 %c 目标类的名称 %l 所处目标类的行数 %r 发生异常到输出完成所使用的时间(毫秒) %p 输出日志的等级 %t...

    Log4j日志管理系统简单使用说明

     org.apache.log4j.PatternLayout(可以灵活地指定布局模式),  org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),  org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)...

    Log4j 学习笔记.doc

    Log4j 学习笔记. 1. Log4j的类图 2. Logger:日志写出器 1. Logger的输出方法 2. Logger的命名规则 3. Log level 4. 示例代码 5. 关于logger的两点说明 3. Appender:日志目的地 1. ConsoleAppender 2. ...

    保证看完就用log4j

    看完就用的,再不理解就不要学java了 #配置日志级别 ...log4j.appender.llg.layout=org.apache.log4j.PatternLayout #配置日志的具体格式 log4j.appender.llg.layout.ConversionPattern=[%d %p] %m%n

    使用log4j时的XML文件

    使用log4j时的XML文件 <layout class="org.apache.log4j.PatternLayout"> </layout>

    LOG4J2 mdc配置

    LOG4J2的生产环境配置配置案例: 4.日志滚动,避免单个日志过大,可以按小时进行日志分割. <RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}.log.gz" ignoreExceptions=...

    log4j.properties

    log4j.appender.stdout=org.apache.log4j.ConsoleAppender ...log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

    uumind-log4j-appender-redis:这是 log4j-redis-appender(https

    uumd-log4j-appender-redis ...log4j.appender.redis.layout=org.apache.log4j.PatternLayout log4j.appender.redis.layout.ConversionPattern = [%p] %-d{yyyy-MM-dd HH:mm:ss} %l %m%n log4j.appender.red

    hawt-log4j:一些log4j实用程序类

    该模块包含一个log4j PatternLayout,它可以在格式化日志事件之前清除该日志事件的消息,从而避免攻击者。 用法示例(在log4j.properties文件中): log4j.appender.out.layout=org.jboss.hawt.log4j....

    spring lib j2ee

    #1 定義了兩個輸出端 level = LOG,INFO,WARN,...log4j.appender.A1.layout = org.apache.log4j.PatternLayout #4 定義A1的輸出格式 log4j.appender.A1.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [%p] %m%n

    Log4net详细说明使用

    <layout type="log4net.Layout.PatternLayout"> [Header] "/> [Footer] "/> [%t] %-5p %c [%x] - %m%n" /> <filter type="log4net.Filter.LevelRangeFilter"> ...

    log4cplus 源码(C++编写的开源的日志系统)

    log4cplus是C++编写的开源的日志系统,前身是java编写的log4j系统.受Apache Software License保护。作者是Tad E. Smith。log4cplus具有线程安全、灵活、以及多粒度控制的特点,通过将信息划分优先级使其可以面向程序...

    log4j_trunctate_poc:poc 测试如何截断堆栈跟踪

    log4j_trunctate_poc poc 测试如何截断堆栈跟踪 介绍 Log4j 从 1.2.16 开始附带一个EnhancedPatternLayout类。 EnhancedPatternLayout能够截断堆栈跟踪消息,因此它们不会填满日志文件。 要启用此功能,对于每个...

    log4j详解与实战 - 企业应用

    log4j详解与实战 - 企业应用 Logger - 日志写出器,供程序员输出日志信息 Appender - 日志目的地,把格式化好的日志信息输出到指定的地方去 ConsoleAppender - 目的地为控制台的Appender FileAppender - 目的地...

    Log4Net使用指南.doc

    3.1.4 log4net.Layout.PatternLayout中的转换模式(ConversionPattern) 3.1.5 3.2 使用配置文件 3.2.1 关联配置文件 3.2.2 创建或获取日志对象 3.2.3 输出日志信息 3.3 在程序中配置log4net 4 总结

    azkaban-3.38安装包(已编译)

    log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss.SSS Z} %p [%c{1}] [Azkaban] %m%n 5. 在azkaban-exec-server目录下...

Global site tag (gtag.js) - Google Analytics