Log4j - PatternLayout

2024 年 8 月 29 日 | 阅读 3 分钟

Log4j 提供了 org.apache.log4j.PattrernLayout 类,用于根据模式以特定格式生成您的日志信息。

PatternLayout 扩展了抽象的 org.apache.log4j.Layout 类,并重写了 format() 方法,以根据提供的模式构造日志信息。

PatternLayout 也是一个简单的布局对象,它提供了 Bean 属性,即 conversionPattern,可以使用配置文件进行设置

conversionPattern:此属性用于设置转换模式。 默认为 %r [%t] %p %c %x - %m%n

模式转换字符

让我们看看下表描述了转换模式中使用的字符以及我们可以在自定义模式中使用的所有其他字符

转换字符含义
c它用于输出日志事件的类别。 例如:对于类别名称 x.y.z,模式 %c{2} 将输出 y.z。
C它用于输出发出日志请求的调用者的完全限定类名。 例如,对于类名“org.apache.abc.MyClass”,模式 %C{1} 将输出“MyClass”。
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(嵌套诊断上下文)。
XX 转换字符后跟 MDC(映射诊断上下文)的键。 例如,X{clientIP} 打印存储在 MDC 中针对 clientIP 键的信息。
%字面百分号。 %% 将打印一个 % 符号。

格式修饰符

默认情况下,相关信息显示为普通输出。 但是,log4j 提供了格式修饰符; 借助它,可以更改最大字段宽度、最小字段宽度和对齐方式。

让我们看一些修饰符

格式修饰符左对齐最小宽度最大宽度comment
%20cfalse20如果类别名称少于 20 个字符,则用空格左填充。
%-20ctrue20如果类别名称少于 20 个字符,则用空格右填充。
%.30c不适用30如果类别名称长于 30 个字符,则从开头截断。
%20.30cfalse2030如果类别名称短于 20 个字符,则用空格左填充。 但是,如果类别名称长于 30 个字符,则从开头截断。
%-20.30ctrue2030如果类别名称短于 20 个字符,则用空格右填充。 但是,如果类别名称长于 30 个字符,则从开头截断。

PatternLayout 示例

让我们看一个 Patternlayout 的简单示例。

以下是 PatternLayout 的简单配置文件

log4j.properties

Log4jExample.java

当您编译并运行上述程序时,您将在 c:/usr/home/log4j 目录中获得一个 log.out 文件,其中将包含以下日志信息

输出

2019-09-16-main--DEBUG-Log4jExample:Hello this is an debug message
2019-09-16-main--INFO - Log4jExample:Hello this is an info message

下一主题Log4j - Appenders