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