lnav 自定义格式 解析nlog 日志 简明教程
引言
最开始,为了解决日志查看的问题;我找到了专业的日志中心:Seq

它支持结构化日志的过滤筛选,有查询语法;支持类SQL查询数据;有了它很多很麻烦的问题一眼就找到bug所在;真是生产力工具 ,我在我NAS中部署它接入了接手的所有项目
但在公司的正式环境中因为网络以及其它的因素却不能使用;这带来了很大的不便;后来我发现了有一个轻量型的命令行工具lnav
这可以一定程度上替代部分SEQ的功能;本文介绍 lnav应用在c# nlog日志的教程
解决方案
lnav解析日志文件依赖于正则表达式及相关配置,但是网上却没有lnav分析nlog日志的教程;本文权当抛砖引玉
nlog的配置在nlog.config中
日志格式定义于target.layout
我的日志格式是这样:
${longdate}|${event-properties:item=EventId.Id}|${logger}|${uppercase:${level}}|${message}|${exception:format=toString}
在创建自己的format时请留意区别
lnav我安装的windwos版它的自定义格式目录在:%APPDATA%\lnav\formats\installed,首次运行时会自行创建;在%APPDATA%\lnav\formats\default中有官方的解析其它日志格式的示例,请自行参考
假如不确定你的目录,请输入lnav.exe -h查看
这里我先给出我的nlog.json配置:
1 | |
配置解读
timestamp-format
官方文档:formats有对时间格式的详细解释,%Y-%m-%d %H:%M:%S可以解析年月日时分秒
value
value中的"identifier":ture表示设置这个匹配字段(logger)为关键字,这样就会高亮显示了
假如你的配置有误,执行lnav.exe xxxx.log命令时会提示,参照修改即可
简明教程
执行lnav.exe xxxx.log yyy.log打开日志文件后页面如图

e跳转到下个错误- 按
F2启动鼠标操作; - 左上角可选时间过滤
- 双击日志内容会弹出
ActionsFilter-in表示只显示与选中的内容相同的行Filter-out表示排除选中内容相同的文本的行Search搜索当前内容