【问题标题】:How to avoid holding too much logs in `Writer Monad`?如何避免在`Writer Monad`中保存过多的日志?
【发布时间】:2015-11-29 00:57:25
【问题描述】:

在学习Writer Monad时,发现它会收集每一步的log值,然后将它们组合在一起。

我有一个关于性能的问题:我什么时候可以记录它们?如果一个方法运行数千次,它将在内存中长时间保存许多字符串。我只能在它返回后将它们记录到文件中。

我们如何使用Writer Monad 在现实世界中记录日志?有什么方法可以及时记录日志吗?

【问题讨论】:

标签: scala monads writer


【解决方案1】:

一般来说,不会。 Writer 旨在使日志记录变得纯粹且可自省;冲洗它的一部分会违反这一点。

在实践中,您可能会创建一个违反法律的Monoid,例如每当它变得太长时写出列表。但这首先会牺牲使用 Writer 的大部分好处。

我建议您对您的要求进行基准测试,明确地runing 并以细粒度、合理的级别注销Writer,例如每个网络请求或每个逻辑事务。

【讨论】:

    猜你喜欢
    • 2015-09-09
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 2016-11-06
    • 2023-01-12
    • 1970-01-01
    • 2015-04-12
    • 2013-03-06
    相关资源
    最近更新 更多