Daemontools multilog 丢失日志行时间信息。如何修复它?

Daemontools multilog 丢失日志行时间信息。如何修复它?

我在用守护进程工具监视进程及其输出日志。我在用多日志将日志写入磁盘。

日志的运行脚本是:

#!/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin
cd /usr/local/script_dir
exec multilog t s16777215 n50 '!tai64nlocal' '!/bin/gzip' /var/log/script_log

被监视的进程还将输出写入 stderr。因此,在该进程的运行脚本中,有以下几行将 stderr 重定向到 stdout:

exec 2>&1
exec ./my_process

然而,在跟踪日志文件时,我看到数百行输出突然出现(受监视的进程每隔几秒写入一次输出),并且日志行上的时间戳在亚微秒级别上有所不同。我从过程的本质知道日志行之间的时间差异并不小。显然,多日志正在缓冲输出,然后在准备写入文件时添加时间戳。我希望时间戳能够更准确地反映该行的输出时间。如何解决这个问题?

答案1

被监控的脚本是一个Python脚本。为了使所有标准流都不受缓冲,我发现只需将选项传递-u给解释器即可。这解决了我的问题。

相关内容