我从一个新项目开始,并对日志记录做了一些考虑.我总是使用模式,其中每个完成日志记录的类都有自己的静态Logger:
private static final Logger logger = Logger.getLogger(LoggingInterceptor.class);
我不太喜欢这种方法,因为我必须将这一行复制到我将记录某些内容的每个类中.我考虑使用Android方法,其中有Log类,其中包含用于记录的静态方法.我开始在互联网上搜索其他人做的类似方法,但没有找到任何东西.
所以我的问题是:这种方法可能有什么不利之处?
我不能想到任何,而是有一些优点,因为它遵循DRY模式.可以使用带有’tags’的Android来处理不同的类别,’tags’是静态Log方法的参数.例如:
Log.debug(tag,message,exception);
然后,Log类本身将使用常见的Logging Framework,例如Log4j甚至SLF4J.
所以我对你的意见感兴趣.
解决方法
基于
java.util.logging.Logger API和
this article,getLogger()的主要原因是确保在子系统之间独立使用相同的Logger和Handler集.
Java推荐的解决方案是获取每个文件顶部的Logger,然后在每次需要时登录到该对象.
使用静态Log.debug将需要每次都处理标记,以便使用正确的Handler集.因此,它比准备好Log对象的效率低.
但是,如果您不使用处理程序,或者不区分子系统,那么静态函数将是一个合理的快捷方式,只要使用的库符合您的需要即可.