重量级自述
这是Haskell日志库,它更喜欢功能和可扩展性重量轻且简单。它可以使用快速记录器作为后端,并与兼容单记录器接口,因此它可以用于已经使用monad-logger的项目。该款重磅背心与文本格式-重字符串格式库。
重型记录仪最显著的特点是:
- 多个后端和编写自己的后端的可能性。提供的后端是:
- 后端速度更快。它允许将消息写入stdout、stderr或任意文件。
- 系统日志后端。
- Chan后端。将消息写入Chan,以便可以从另一个Chan中读取侧面。
- 可以并行向多个后端写入消息。
- 日志后端设置可以动态定义;没有必要硬编码您将使用哪个后端,您可以在运行时加载设置。
- 可以在运行时更改后端或其设置(更准确地说,如果使用
动态后端
作为后端,或者,如果使用,可以更改后端的筛选器过滤M
作为后端)。
- 一组默认的日志消息严重性级别和定义的可能性自定义严重性级别。
- 日志上下文堆栈支持(也称为映射诊断上下文,MDC)。每个日志上下文堆栈框架包含一组命名变量。这些变量可以写入日志。
- 可以在输出文件中定义日志消息格式。例如,do您想先查看事件严重性级别,然后查看时间,或者反之亦然?它可以在格式中使用来自日志上下文堆栈的变量字符串。
- 灵活的事件过滤机制。根据消息筛选消息源和严重性级别。例如,您可能希望只写信息消息,但也调试来自一个模块的消息。过滤可以是分两个阶段执行:
- 在事件传递到后端之前。这个阶段是上下文敏感的;对于例如,您只能为发生在交易。上下文级过滤器也支持否定;例如,它可以显式禁止来自一个上下文的调试消息,而对整个系统启用调试。
- 在后端。例如,您可以禁止将任何调试写入文件,但允许将所有调试写入syslog。
- 文本格式库集成。邮件的格式
文本格式-重
懒散地做;因此,您可以进行大量调试消息,包括需要花费时间以字符串形式呈现的数据;这个只有在调试此的输出时才会执行格式化模块实际上是由过滤器启用的。
这个包主要是用“开放体系结构”的思想编写的。它暴露了所有内部逻辑部件,因此它们可以按其他顺序组合应用。
该包提供的所有函数都在任何monad中工作,monad应该是包定义的一个类型类的实例:哈斯洛格
,HasLog后端
,HasLogContext(哈斯日志上下文)
。每个函数的签名仅声明特定约束,因此如果您不需要所有功能,则只能实现这些功能的实例您实际需要的类。
通常有以下几种使用此软件包的方法:
- 使用
日志记录T
单体变压器。它可以是最简单的,如果你已经有了一元变压器堆叠1-2个变压器,您不介意添加另一个。使用日志记录T
,您不需要编写任何适配器实例,因为日志记录T
已经是所有必需类的实例。此实现自动解决所有与线程相关的问题,因为实际上它不会具有任何共享状态。
- 使用
系统。日志。沉重。IO(输入输出)
模块。如果你根本没有一元变压器,并且您的应用程序在纯IO中工作,这可能是最简单的方法。然而,这有点脆弱,因为您必须确保始终调用日志记录仅当日志记录状态初始化时,即在带LoggingIO
呼叫。此实现将所需状态存储在线程存储中。
- 为已经在中使用的一元堆栈实现所需的类实例您的应用程序。例如,如果您已经拥有
读卡器状态T超出IO
,最好添加几个字段设置为StateT的状态以跟踪日志记录状态,然后将堆栈更改为ReaderT StateT LoggingT超出IO
。如果您希望将日志记录状态存储在一种共享存储(全局IORef或其他),那么您应该考虑自己穿线安全。
请参阅中的Haddock文档和示例示例/
目录了解更多详细信息。