我见过使用 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/