当前位置:嗨网首页>书籍在线阅读

07-结构化日志记录

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

11.4.2 结构化日志记录

结构化日志记录是非结构化日志记录的可扩展、更好的替代方案。顾名思义,结构化日志记录定义了日志消息的结构和格式,并且每个日志消息都确保具有此格式。这样做的好处是,日志聚合服务很容易构建索引,并向用户呈现任何特定事件,而不用管它们具有多少消息。结构化日志记录框架有很多,例如C#的Serilog,它为结构化日志记录提供了支持。这些框架提供了一个基于插件的日志输出抽象,其名为Sink。Sink表示发送日志的目标位置。Sink可以是你的终端、文件、数据库或日志聚合服务,例如logstash。

结构化日志记录框架知道如何序列化某个对象,并且能够以适当的方式执行此操作。它们还可以通过提供分层的日志输出来自动格式化日志消息,这取决于日志是从哪个组件发出的。结构化日志记录的不足在于,将它集成到应用程序可能需要花费一些时间,因为你必须事先确定日志的层次结构和格式。

在结构化日志记录和非结构化日志记录之间进行选择时,通常需要进行一番权衡。日志量大的复杂项目可以从结构化日志中获益,因为它们可以从模块中获取语义和高效地搜索日志。而小型到中型的项目可以使用非结构化日志记录。最终,由应用程序的需求来决定如何在其中集成日志记录功能。在下一节中,我们将探讨非结构化日志记录软件包,以及Rust中的结构化日志记录软件包,你可以通过它们为程序记录事件。