java - 使用 getSimpleName() 与 getName() 获取记录器

标签 java logging log4j

我见过使用 log4j 的代码,它使用

为给定的 Logger 获取 logger
static public Logger getLogger(String name)

static public Logger getLogger(Class clazz)

前一个 api 使用 getSimpleName() 显式传递,而后者在传递的 Class 上使用 getName()。这两者有区别吗?如果我在 log4j.properties 文件中配置各种包以不同级别记录会影响吗?

最佳答案

是的,有很大的不同。

我从不将 simpleName 用于 Logger 实例,因为它会删除包名称。 除了在两个不同的包中存在相同的类名时遇到问题(导致两个类获取相同的记录器实例),您将失去控制记录器继承的能力。

例如对于两个记录器:

com.foo.A
com.foo.B

在属性中,我可以:

log4j.logger.com.foo=DEBUG,CONSOLE

关于java - 使用 getSimpleName() 与 getName() 获取记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4308583/

相关文章:

java - 获取 java.lang.NoClassDefFoundError : org/apache/catalina/connector/Connector in wildFly 21. x

java - 将未知对象转换为 boolean 值

java - 配置 Wiremock 以将 log4j 与自定义转换器结合使用

Tomcat - 标准输出文件非常大

java - 如何增加 log4j 输出缓冲区以记录整个字符串,而不仅仅是前 100 个字符?

java - log4j2 -version 2.5 - 如何使用 java.util.properties 对象配置 log4j2

Tomcat6 - 如何通过 log4j 或 JULI 获取 session 参数?

java - 父级在组件中不公开

java - Android API 21 异步 GET 请求不起作用

node.js - Heroku 日志 - 错误消息中提到的打开日志