我正在跟踪我自己的应用程序和 postgres 的日志。
tail -f /tmp/myapp.log /var/log/postgresql/postgresql.main.log
我需要包含 pgpool 的日志。以前是syslog,但现在是journalctl。
有没有办法将 tail -f && Journalctl -f 结合在一起?
答案1
你可以使用:
journalctl -u service-name -f
-f,--跟随
仅显示最新的日记条目,并在新条目附加到日记时连续打印它们。
在这里我添加了“服务名称”来区分这个答案和其他答案;您可以替换实际的服务名称而不是文本service-name
。
答案2
你可以将您的日志条目转发至杂志:
systemd-cat tail -f /tmp/myapp.log /var/log/postgresql.log
然后使用journalctl -f
...尽管正如马克提到的那样,这将打印所有日记条目。
仅过滤来自这些日志和特定单元的消息的一种方法是使用不同的SYSLOG_IDENTIFIER
即编辑单元文件并在该[Service]
部分下添加例如
SyslogIdentifier=my_stuff
重新启动设备,然后systemd-cat
使用相同的标识符运行
systemd-cat -t my_stuff tail -f /tmp/myapp.log /var/log/postgresql.log
最后仅在日志中查询该特定标识符:
journalctl -f -t my_stuff
答案3
如果你有 bash 可用,你可以使用流程替代作为参数之一tail
:
tail -f /tmp/myapp.log /var/log/postgresql/postgresql.main.log <(journalctl -f)
答案4
使用日记尾:
journaltail --unit pgpool.service /tmp/myapp.log /var/log/postgresql/postgresql.main.log
在 stackoverflow 等人寻找解决方案后,我一小时前刚刚将脚本放在一起。