`
chenqi210
  • 浏览: 78695 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

log4j PatternLayout里各参数对性能的影响

阅读更多

在官网上有介绍,但还是复制一下,以免忘掉

 

转自  https://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 PatternLayoutextends Layout

A flexible layout configurable with pattern string. This code is known to have synchronization and other issues which are not present in org.apache.log4j.EnhancedPatternLayout. EnhancedPatternLayout should be used in preference to PatternLayout. EnhancedPatternLayout is distributed in the log4j extras companion.

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, 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 and 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, its generation is extremely slow and 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 and 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 and 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ü
分享到:
评论

相关推荐

    tomcat8更换log4j记录日志

    Log4j的优点包括可配置性、性能高效以及支持多种输出格式,如控制台、文件、数据库等。在Tomcat中,Log4j可以用来代替默认的日志系统,提供更精细化的日志控制和更好的日志分析能力。 压缩包中的"**log4j....

    Spring项目中怎么配置log4j

    在Spring项目中配置log4j是一项基础且重要的工作,它能帮助我们记录应用程序的运行日志,便于调试、排查问题和性能分析。Log4j是一个广泛使用的Java日志框架,提供灵活的日志记录功能。接下来,我们将详细讲解如何在...

    Log - Log4j - log4j.properties配置文件

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

    log4j(三):配置文件属性解释、级别、布局、参数设置等

    本文将深入解析Log4j的配置文件属性、日志级别、布局方式以及参数设置等核心知识点,帮助你更好地理解和利用这个强大的工具。 一、配置文件属性解释 Log4j的核心配置文件通常是`log4j.properties`或`log4j.xml`,它...

    log4j测试程序

    3. **配置文件**:Log4j可以通过XML(如log4j.xml)或properties(如log4j.properties)文件进行配置,这些文件定义了日志输出的位置、格式和级别等参数。 4. **Appenders**:Appender是Log4j中负责将日志信息输出...

    spring mvc log4j

    - 使用 `log4jConfigLocation` 参数在 Spring 配置文件中指定 `log4j.properties` 或 `log4j.xml` 文件的位置。 6. **日志级别管理** - 可以在运行时通过修改 Log4j 配置文件,或者使用 `log4j-api` 提供的 API ...

    log4j和log4j .jar包

    1. **性能优化**: Log4j允许在运行时动态调整日志级别,这使得在开发和调试阶段可以记录大量信息,而在生产环境中则可以降低日志级别以提高性能。 2. **可扩展性**: 通过自定义Appender和Layout,Log4j可以适应各种...

    Mybatis+Log4j

    7. **运行时日志输出**:在运行项目时,Mybatis会根据Log4j的配置打印相应的日志信息,包括SQL语句、参数绑定、执行时间等,这对于调试和性能优化非常有帮助。 总的来说,Mybatis和Log4j的结合使得我们能够方便地...

    Log4j教程

    虽然Ajax主要用于前端交互,但在后端处理Ajax请求时,Log4j可以帮助我们记录请求细节,如请求参数、响应时间等,以便于分析性能和错误。 ### 六、学习资源 阅读`Log4j.pdf`文档,你会发现更多关于Log4j的详细信息...

    log4j从入门到详解

    - **性能考虑**:虽然日志记录对于调试和维护非常有用,但在生产环境中过度使用日志可能会对性能造成影响。 - **安全性**:敏感信息不应直接记录到日志中,以免泄露。 #### 5. Properties文件实例说明 在上述的...

    Log4j日志配置说明,Log4j日志配置说明

    log4j.appender.R1.layout=org.apache.log4j.PatternLayout log4j.appender.R1.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n log4j.additivity.ttzl=false ``` - **日志级别**:从低到高分别为 ...

    log4j的详细配置

    Log4J是一个广泛使用的Java日志框架,它允许开发者记录应用程序中的各种日志信息,以进行调试、性能分析和故障排查。配置Log4J是关键步骤,因为它决定了日志的输出级别、输出目的地、输出格式等多个方面。下面将详细...

    Eclipse集成Log4j

    通过调整`log4j.properties`中的参数,你可以根据实际需求定制日志输出的详细程度、存储位置和格式。同时,Log4j还支持更复杂的配置,如过滤器、异步日志记录和自定义布局,为开发者提供了极大的灵活性和可扩展性。...

    使用log4j写日志文件

    这里通过`getInitParameter`获取Web应用中的初始化参数,通常是log4j配置文件的路径,然后调用`PropertyConfigurator.configure()`方法加载配置。 #### 在IDE中使用Log4j 对于在IDE中开发的应用,可以直接在代码中...

    log4j-1.2.14.jar.zip 335k

    在Log4j中,通常通过配置文件(通常是log4j.properties或log4j.xml)来设定各种参数。以下是一个简单的配置示例: ```properties log4j.rootLogger=DEBUG, Console, File log4j.appender.Console=org.apache.log4j....

    log4j从入门到精通(附jar文件)

    log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ``` ##### 4.2 XML 配置文件详解 XML 配置文件是一种更加现代、灵活的...

    mybatis配置文件以及日志文件Log4j

    例如,你可以配置Log4j的日志输出级别为DEBUG,那么在运行时,MyBatis会打印出每个SQL语句及其参数,便于查看和调试。 在实际项目中,MyBatis的配置文件通常会包含以下部分: 1. 数据源配置:定义数据库连接的信息...

    log4j.properties参数详解word

    通过以上对log4j.properties参数的详细解析,我们可以根据项目的实际需求,灵活配置日志输出,实现高效、实用的日志管理。在实际开发中,保存这样的文档作为参考是非常有价值的,能帮助我们快速解决日志相关的问题,...

    log4j生成文件及文件夹

    在IT行业中,日志记录是系统监控和故障排查的关键环节,而Log4j则是Java开发中最常用的日志框架之一。本文将深入探讨如何利用Log4j生成动态的日志文件名以及动态创建文件夹,帮助开发者更好地管理和分析应用程序的...

    log4j使用方法及简单配置

    log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n # 定义File Appender log4j.appender.File=org.apache.log4j....

Global site tag (gtag.js) - Google Analytics