首页 > 解决方案 > 无副作用的日志记录

问题描述

我有一个Scala包,应该从上到下记录,尽管我希望它纯粹是功能性的。有没有办法在不破坏功能风格的情况下实现日志记录?

标签: scalafunctional-programmingside-effects

解决方案


https://github.com/ChristopherDavenport/log4cats - 它已经完成了。

如果你需要副作用(你确实需要)并且你关心 FP,你必须以非常透明的方式来做它们。这基本上意味着用某种 IO monad 包装侧 wffects。

所以,你需要做的就是推迟登录到一些 IO monad。为您执行此操作的一个库是 log4cats。

但是,很多人经常将日志记录视为“纯功能”规则的例外(类似于分配和读取配置、检测等),如果在项目中有很多人不了解 IO 则更是如此monads 非常好,所以如果最初你将使用 ScalaLogging 并且在这方面不会打扰 RT,那么没有人应该私刑你。

稍后您可以继续使用完整的 FP、Cats Effect、IOApp 或 TaskApp(如果是 Monix),然后像 log4cats 之类的东西会为您提供日志类型类。


推荐阅读