如何在journalctl日志行中显示应用名称而非进程ID
如何在journalctl日志行中显示应用名称而非进程ID
嗨,我来帮你搞定这个问题!你看到的app[194430]里的数字是进程ID(PID),前面的app是进程的可执行文件名,而不是你实际的服务名app_1或app_2。要显示服务名称,有两个实用的思路:
一、临时调整journalctl输出格式(快速查看)
如果只是临时排查想看到服务名,不用改配置,直接给journalctl指定合适的输出格式就行:
- 用
short-full格式,它会在日志行开头显示完整的服务单元名:
调整后你会看到类似这样的日志行:journalctl -u app_1 -u app_2 -f -o short-fullJun 07 12:29:31 server app_1.service[194430]: 2024-06-07T12:29:31.257154Z ERROR custom_error
- 要是想看到更详细的元数据(包括服务单元、PID、日志级别等所有字段),可以用
pretty格式:
这个格式会把每个日志条目拆分成清晰的字段展示,一眼就能找到journalctl -u app_1 -u app_2 -f -o prettyUNIT对应的服务名。
二、修改服务配置(长期解决)
如果希望以后所有日志都默认显示正确的服务名,而不是依赖输出格式,可以修改你的systemd服务文件(比如app_1.service和app_2.service):
- 打开对应的服务文件,找到
[Service]段 - 添加
SyslogIdentifier参数,指定你想显示的服务名:[Service] SyslogIdentifier=app_1 - 重新加载systemd配置并重启服务:
之后再用systemctl daemon-reload systemctl restart app_1 app_2journalctl -u app_1 -u app_2 -f查看,日志里就会直接显示app_1而不是app[PID]啦。
简单来说,第一种方法适合临时查日志时用,第二种是一劳永逸的方案,根据你的需求选就好~
备注:内容来源于stack exchange,提问作者Fred Hors
相关产品推荐
相关产品推荐

