为什么Lagom在生产环境中使用异步的Appender?

3
以下资源显示Lagom在生产中使用异步记录器。 https://www.lagomframework.com/documentation/1.3.x/java/SettingsLogger.html 但是,Lagom也使用Akka,并建议您在Actor中使用Akka方式记录日志 -> https://doc.akka.io/docs/akka/2.5/logging.html?language=java 通过LoggingAdapter进行的Akka方式记录日志基本上将所有日志消息转发给Logging actor。这样做是为了最小化对Actor的影响 -> 通过另一个Actor异步完成记录。
我是否正确理解这些会导致两次异步记录? 这是个问题吗? 在slf4j的异步记录和Akka方式记录日志中,应该优先选择哪个? 有哪些赞成和反对的观点?
1个回答

4

在Lagom中有很多需要记录日志的地方,而这些地方并不在Actor内部。此外,还需要考虑用户代码。大多数用户代码是在Actor之外编写的,但是在Actor内运行。

通过ActorLogging记录日志的确存在开销,但这比在Actor内部调用用户定义的阻塞式记录器要好。


这是否意味着可以直接通过slf4j在“actor”之外的位置记录日志,这是完全有效的?并不是将Actor中可用的LoggingAdapter传递给生活在Actor“后面”的POJO。对于这些Pojo来说,最好自己获取其日志记录器?感谢澄清。 - Jo Vanthournout
是的,只要您使用异步 appender,就没有问题。如果我没记错的话,ActorLogging 和所有支持 Akka 异步日志记录的基础设施最初是 Akka 自己所需的日志记录功能。他们不能强制用户配置异步 appender,也不想在可能会减慢应用程序速度的代码库上阻塞 IO。 - Renato
在同一“请求”中同时使用akka LoggingAdapter和SLF4J API时,是否会遇到MDC的问题? - Jo Vanthournout

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接