【发布时间】:2016-06-06 04:48:34
【问题描述】:
我尝试了以下记录器
- Java 日志记录 API
- Log4j
- slf4j
所有这些都需要在类级别声明 LOGGER,如下所示
private final static java.util.logging.Logger.Logger LOGGER = java.util.logging.Logger.Logger.getLogger(MyClass.class.getName());
private final Logger slf4jLogger = LoggerFactory.getLogger(SLF4JHello.class);
private final static Logger log4jLogger = Logger.getLogger(Log4jHello.class);
这对我来说看起来很可怕,java中是否有不需要此声明的记录器框架?
我正在寻找的是,我可以有一个像这样的全局声明
private final static Logger Logger = Logger.getLogger(MyApp.class);
但是当我从类 XXX.class 调用 Logger.log(..) 时,Logger 应该使用 XXX.class 名称。
【问题讨论】:
-
如何定义和命名记录器完全取决于您(在任何这些框架中)。您可以只为您的整个应用程序使用一个,或者在任何呼叫中拨打
getLogger。 -
记录器的名称也不一定与它显示的内容相关联。这一切都可以配置。
-
我的意思是“a)所有的日志框架呈现这种模式是一个线索,它工作得很好 b)他们不需要你遵循这个模式”
-
现代的方式是使用依赖注入来设置依赖,比如这个模式支持的日志接口。因此,没有任何现代日志框架可能会以不同的方式做事。
标签: java logging log4j slf4j java.util.logging