我从一个新的项目开始,并做了一些有关日志记录的注意事项。我总是使用这种模式,其中完成日志记录的每个类都有自己的静态Logger:

private static final Logger logger = Logger.getLogger(LoggingInterceptor.class);

我不太喜欢这种方法,因为我必须将此行复制到要记录某些内容的每个类中。我考虑过使用Android方法,其中有Log类及其静态方法进行记录。我开始在互联网上搜索其他人也做过的类似方法,但没有发现任何东西。

所以我的问题是:这种方法有什么缺点?

我遵循DRY模式,只不过有些优势而已。可以像Android中使用“标签”一样处理不同的类别,“标签”是静态Log方法的参数。例如:
 Log.debug(tag, message, exception);

然后,Log类本身将使用通用的日志记录框架,例如Log4j甚至SLF4J。

因此,我对您的意见感兴趣。

最佳答案

基于java.util.logging.Logger APIthis articlegetLogger()的主要原因是确保子系统之间独立使用相同的LoggerHandler集。

Java推荐的解决方案是获取每个文件顶部的Logger,然后在需要时登录到该对象。

使用静态Log.debug将要求每次都处理tag,以便使用正确的Handler集。因此,这比使Log对象准备就绪要低效率。

但是,如果您不使用handlers或不区分子系统,则静态函数将是一个合理的捷径,只要所使用的库适合您的需求即可。

07-25 23:22
查看更多