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