Log4j显示包名称

时间:2010-04-07 18:15:16

标签: java java-ee log4j

现在,对于我的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。我知道这会慢一点,但它只适用于调试,而不是系统何时投入生产。

2 个答案:

答案 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

     

警告生成调用者类信息很慢。因此,除非执行速度不是问题,否则应避免使用。