在 Java 中,日志记录的标准习惯用法是为记录器对象创建一个静态变量,并在各种方法中使用它。
在 Scala 中,习惯用法似乎是使用 logger 成员创建 Logging 特征,并将该特征混合到具体类中。这意味着每次创建对象时,它都会调用日志记录框架来获取记录器,并且由于额外的引用,该对象会更大。
是否有一种替代方案可以轻松使用“with Logging”,同时仍然使用每类记录器实例?
编辑:我的问题不是如何在 Scala 中编写日志框架,而是如何使用现有的日志框架(log4j)而不产生性能开销(获取每个实例的引用)或代码复杂性。另外,是的,我想使用 log4j,只是因为我将使用用 Java 编写的可能使用 log4j 的第 3 方库。
我只是坚持“使用日志记录”方法。简洁的设计每次都会获胜——如果你摆脱了样板文件,那么你就有可能在其他领域找到更有用的收获。
请记住,日志记录框架将缓存记录器,因此每个类仍然有一个记录器,即使该类的每个实例碰巧都持有一个(廉价的)引用。
如果没有证据表明记录器引用正在损害您的堆,这听起来很像过早优化...只要放松,不要担心它,除非探查器告诉您其他情况。
在一个不相关的说明中,您可能还想研究使用 slf4j 和 logback 而不是 log4j。 slf4j 具有更简洁的设计,更适合惯用的 scala。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)