我在我的程序中使用syslog来生成日志消息。
有没有一种方法可以将我的程序的syslog输出发送到stdout?
我不想使用tail
命令查看我的程序日志,我希望直接在控制台上查看它。
/etc/syslog.conf
文件。根据你要发送到syslogd的设施不同,你需要添加类似以下这样的一行内容:<facility>.debug /dev/console
请务必查看 man 5 syslog.conf
以获取所有详细信息。
php:7.4-fpm
)中运行cron
,但它似乎只记录到rsyslog
(/dev/log
)。对我有效的方法是*.* /dev/stdout
(/dev/console
不存在,指定/dev/tty
也没有任何区别)。 - x-yuriapt-get install rsyslog
命令,将cron.* /dev/console
添加到/etc/rsyslog.conf
文件中,并执行service rsyslog start
命令 -- 然后我就可以使用cron -f
在前台运行它并在标准输出上查看输出。 - NReilingh/dev/console
似乎只在交互式会话中有效。我意识到这些目标是相对于 rsyslogd
而不是 cron
的,所以最终我在前台运行了 rsyslogd
(使用 -n
参数)并将其定向到 /dev/stdout
。 - NReilingh要在控制台/Shell 中持续克隆文件输出,请使用以下命令:
tail -f <logfile> &
-f
参数可以让tail命令继续打印文件中写入的内容。
&
符号可以将进程放到后台,这样你就可以在窗口中做其他事情了。如果要让控制台一直等待直到你按下ctrl+c
,则不需要使用&
符号。
syslog
守护程序的问题。但是,在任何给定的上下文中,你无法真正预测“标准输出”是什么意思,因此在文件上运行tail
可能是最简单的方法。例如,如果你已经登录到/dev/ttyS0
的root
,并且你自己在/dev/pts/17
和/dev/pts/42
上,它应该写入所有三个还是只写入子集?如果其中一个是screen
会话或类似的关键交互对话框呢?有很多复杂性。 - tripleee