【发布时间】:2020-05-19 23:01:15
【问题描述】:
我正在使用 RIO monad 和 RIO 库并希望添加日志记录。 RIO 日志函数,如logInfo,将Utf8Builder 作为参数,它是ByteString 构建器的包装器。我想在我的代码中有效地插入日志语句。但是,我不确定如何将简单的 Text、String 和 ByteString 值转换为适当的 Builder。
这不会进行类型检查:
logInfo $ "Identifier: " <> UUID.toByteString myId
其中myId 是UUID 值。类型检查器错误是
• Couldn't match expected type ‘Utf8Builder’
with actual type ‘bytestring-0.10.10.0:Data.ByteString.Lazy.Internal.ByteString’
我尝试将 UUID 转换为 Text,尝试使用 encodeUtf8Builder,然后将生成的 Builder 包装在 Utf8Builder 中,但无济于事。
我的直觉是,日志记录应该可以简单地工作,无需进行大量转换;所以我可能错过了明显的路线。如何使用 RIO 记录器简单地记录值?
【问题讨论】: