教程列表
开源项目
知识点
相关文章
更多最近更新
更多log4j PatternLayout配置基于模式的特定格式的日志信息
2019-04-27 18:45|来源: 网路
如果想生成基于模式的特定格式的日志信息,那么可以使用 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的使用步骤[2022-10-29]
一、使用步骤: 第一步 加入log4j-1.2.8.jar(可以选择log4j的更高版本)到lib下。 第二步 在CLASSPATH下建立log4j.properties。内容如下(数字为行号): 1 log4j.rootCategory=INFO, stdout , R 2 3 log4j.appender.stdout=org.apache.log4j.ConsoleAppender 4 log4j.appender.stdout.layout=org.apache.lo ... -
Log4j JPA Appender(Log4j JPA Appender)[2022-02-24]
解决了JDBC appender,我使用了命令: log4j.appender.JDBC.sql = INSERT INTO .... 我只是将请求的参数传递给插入查询,但是我已经配置了持久性。 感谢log4j.MDC MDC教程 Solved with JDBC appender , i used the command : log4j.appender.JDBC.sql=INSERT INTO .... I just pass the requested parameters to the insert ... -
Flyway和Log4J记录(Flyway & Log4J Logging)[2022-09-17]
只有从4.0开始的Flyway命令行才支持此功能: https : //github.com/flyway/flyway/issues/1075 This is will only be supported for Flyway Command-line starting with 4.0: https://github.com/flyway/flyway/issues/1075 -
将以下添加内容插入到log4j.xml中: