有没有办法使用标准 UNIX 工具查找系统日志优先级或日志条目的严重性?
例如,我可以在日志中 grep 单词 error。但如果发生错误,并非所有日志都会显示单词“error”。最好能找到日志中所有以 err 严重性记录的条目。
显然,syslog 知道这些属性,但我不确定一旦将消息写入磁盘,这些相关的元数据是否会被删除,所以这可能是不可能的。
答案1
传统的 syslog 行为确实正如您所说,优先级是 syslog 消息头的一部分,在内部使用,并且只有时间戳、主机名和消息内容写入磁盘。
该消息可能包含或不包含严重程度的文本描述,并且在写入磁盘后无法检索它。
如果你切换到功能更丰富的替代方案,例如rsyslog
你会获得更多配置选项,包括模板您可以在其中精确配置事件的存储方式,从而包括优先级。
答案2
默认情况下,信息不会写入磁盘。——检查 syslogd 文档了解如何更改这一点。
{Free,Net}BSD 的 syslogd 采用-v
或-vv
参数来添加设施和优先级。
rsyslog 和 syslog-ng 允许您配置自定义消息模板。例如rsyslog 中的示例:
$template precise,"%syslogpriority%,%syslogfacility%,%timegenerated%,%HOSTNAME%,%syslogtag%,%msg%\n"