无副作用的日志记录

Ant*_*nin 0 functional-programming scala side-effects

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

Mat*_*zok 5

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

如果您需要副作用(并且您确实需要)并且您关心 FP,则您必须以明显透明的方式进行处理。这基本上意味着用某种 IO monad 包装 side wffects。

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

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

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