现在,对于我的ConversionPattern,我有:
log4j.appender.A1.layout.ConversionPattern=%d{yyyy MMM dd HH:mm:ss,SSS} %5p [%t] (%F:%L) - %m%n
我想要做的还包括类的完整包名(%F:%L),但我找不到any config to do so in the docs。我知道这会慢一点,但它只适用于调试,而不是系统何时投入生产。
答案 0 :(得分:23)
也许我只是误解了你,但是%C会输出你的课程。
来自您引用的文档:
%C
用于输出完全限定的 发出呼叫者的类名 记录请求。这种转换 可以选择遵循说明符 通过精确说明符,即a 括号中的十进制常量。
如果给出精度说明符, 那么只有相应的数量 这个班级的大多数组成部分 名称将被打印。默认情况下 类名完全输出 合格的表格。
例如,对于类名 “org.apache.xyz.SomeClass”,. pattern%C {1}将输出“SomeClass”。
警告生成调用者类 信息很慢。因此,使用应该 除非执行速度快,否则应避免 不是问题。
<强>更新强> 在许多情况下,您也可以使用%c,如果您的类别是您的类名,它也将打印出包含完整的类。例如,当你在初始化Log时做这样的事情:
private static final Log LOG = LogFactory.getLog(MyClazz.class);
使用%c并不慢。
答案 1 :(得分:1)
使用C{1}
的速度很慢。请参阅以下详细信息:
根据以下link:
用于输出调用者发出的完全限定类名 记录请求。此转换说明符可以是可选的 后跟精度说明符,即十进制常量 括号。如果给出了精度说明符,那么只有 类名的最右边组件的相应数量 打印。默认情况下,类名以完全限定的方式输出 形式。
例如,对于班级名称
org.apache.xyz.SomeClass
, 模式%C{1}
将输出SomeClass
。警告生成调用者类信息很慢。因此,除非执行速度不是问题,否则应避免使用。