【问题标题】:Why does lagom use an async appender in production为什么 lagom 在生产中使用异步附加程序
【发布时间】:2018-01-10 15:25:17
【问题描述】:

以下资源指出 Lagom 在生产中使用异步记录器。 https://www.lagomframework.com/documentation/1.3.x/java/SettingsLogger.html

不过,lagom 也使用 akka,akka 建议您使用 akka 方式登录您的 actor --> https://doc.akka.io/docs/akka/2.5/logging.html?language=java

akka 的日志记录方式(通过 LoggingAdapter)基本上将所有日志消息转发给 Logging Actor。这样做是为了尽量减少 Logging 对您的 actor 的影响 --> 日志记录是由另一个 actor 异步完成的。

我是否正确,这些组合会导致双重异步日志记录? 这是一个问题吗? slf4j 的异步日志记录是优先于 akka 日志记录方式还是其他方式? 论据赞成,论据反对?

【问题讨论】:

    标签: logging akka slf4j lagom


    【解决方案1】:

    在 Lagom 中有很多地方需要我们记录,而且我们不在 Actor 内部。另外,关于用户代码。大多数用户代码是在 Actor 外部编写的,但在 Actor 内部运行。

    通过ActorLogging 登录时确实存在开销,但这比碰巧从 Actor 内部调用的用户定义的阻塞记录器更可取。

    【讨论】:

    • 这是否意味着直接通过slf4j在演员“外部”的这些地方登录是完全有效的。并不是说演员中可用的 LoggingAdapter 被传递给 pojo 在演员“背后”的生活。这些 Pojo 最好还是使用自己的记录器? Tnx 进行澄清
    • 是的,只要您使用异步附加程序,就没有问题。如果我没记错的话,ActorLogging 和所有在 Akka 中支持异步日志记录的基础设施最初都是 Akka 自己的日志记录所需要的。他们不能强制用户配置异步追加器,也不想在他们的代码库上阻塞 IO,这可能会降低您的应用程序的速度。
    • 当您在同一个“请求”中同时使用 akka LoggingAdapter 和 SLF4J api 时,是否知道使用 MDC 会出现问题
    猜你喜欢
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 2019-08-30
    • 2018-03-31
    • 1970-01-01
    • 2016-07-01
    • 2019-10-27
    • 2011-05-08
    相关资源
    最近更新 更多