Log4j显示包名称

Ste*_*ier 11 java log4j java-ee

现在我的ConversionPattern我有:

log4j.appender.A1.layout.ConversionPattern=%d{yyyy MMM dd HH:mm:ss,SSS} %5p [%t] (%F:%L) - %m%n
Run Code Online (Sandbox Code Playgroud)

我想要做的还包括类的完整包名(%F:%L),但我在文档中找不到任何配置.我知道这会慢一点,但它只适用于调试,而不是系统何时投入生产.

Mic*_*zka 23

也许我只是误解了你,但是%C会输出你的课程.

来自您引用的文档:

%C

用于输出发出日志记录请求的调用者的完全限定类名.此转换说明符可以后跟精度说明符,后者是括号中的十进制常量.

如果给出了精度说明符,则只打印类名的最右边组件的相应数量.默认情况下,类名以完全限定的形式输出.

例如,对于类名"org.apache.xyz.SomeClass",模式%C {1}将输出"SomeClass".

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

更新: 在许多情况下,您也可以使用%c,如果您的类别是您的类名,它也将打印出包含完整的类.例如,当您在初始化日志时执行此类操作时:

private static final Log LOG = LogFactory.getLog(MyClazz.class);
Run Code Online (Sandbox Code Playgroud)

使用%c并不慢.