首页 > 解决方案 > bash 记录器中的自定义日志格式

问题描述

我有这样的默认日志格式:

+ logger --stderr '[START]'
<13>Jun 29 13:10:02 ada: [START]

但我需要这样的东西:

+ logger --stderr '[START]'
2018-06-29 11:11:43,524 1 INFO ada: [START]

我已经咨询过man logger,但没有关于如何做自定义时间戳的说明。我希望有类似的东西:

+ export LOGGER_FORMAT="{year}-{date}-{month} ... {level} {user}: {message}"
+ logger --stderr '[START]'
2018-06-29 11:11:43,524 1 INFO ada: [START]

有这样的事情吗?

journalctl 已经做得很好,它从logger命令接收消息。这是如何运作的?

journalctl

-- Logs begin at Tue 2015-02-03 21:48:52 UTC, end at Tue 2015-02-03 22:29:38 UTC. --
Feb 03 21:48:52 localhost.localdomain systemd-journal[243]: Runtime journal is u

标签: linuxbashshellloggingsystemctl

解决方案


logger生成具有标准格式的系统日志消息。时间戳有一种被禁止的格式,以便系统日志工具能够解析它。它不能也不应该改变。

systemd 日志在生成 syslog 消息时对其进行解释,解析每个部分并将其以自定义格式存储在其内部数据库中。如果您想以不同的方式打印日志消息,您可以执行相同的操作:阅读 syslog 消息的格式,编写脚本或正则表达式以提取组件片段,然后以您喜欢的方式打印出来。


推荐阅读