结合尾巴&& journalctl


27

我正在跟踪自己的应用程序和postgres的日志。

tail -f /tmp/myapp.log /var/log/postgresql/postgresql.main.log

我需要包括pgpool的日志。它曾经是syslog,但现在在journalctl中。

有没有办法将-f && journalctl -f尾部绑在一起?

Answers:


27

您可以使用:

journalctl -u service-name -f

-f,-关注

仅显示最新的日记帐分录,并在它们添加到日记帐时连续打印新分录。

在这里,我添加了“服务名称”以区分此答案。您可以用实际的服务名称代替文本service-name


20

您可以将日志条目转发到journal

systemd-cat tail -f /tmp/myapp.log /var/log/postgresql.log

然后使用journalctl -f...尽管如Mark所述,它将打印所有日记帐分录。


仅过滤来自那些日志和特定单位的消息的一种方法是使用唯一的方法,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

4

如果有可用的bash,则可以将进程替换用作tail参数之一:

tail -f /tmp/myapp.log /var/log/postgresql/postgresql.main.log <(journalctl -f)

这是我也尝试过的优雅方式,但是不起作用。尾巴显示它正在使用/ dev / fd / xx,但未显示任何日志。
越野车

正确; / dev / fd / xxx是bash用于实现进程替换的临时管道;任何journalctl输出都将显示在其中。
杰夫·谢勒

5
您可能不想只关注整个日志,而只关注pgpool单元的那些日志。假设服务名为pgpool.service,请尝试journalctl -fu pgpool.service。另外,如果您不是以root用户身份运行,请确保用户在systemd-journal组中!
Mark Stosberg '16

1

尝试类似:

tail -f /tmp/myapp.log >> /tmp/tail.log &
journalctl -f >> /tmp/tail.log &
tail -f /tmp/tail.log
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.