4
我的程序輸出信息用這種命令的日誌文件:最新的系統日誌消息被延遲
#include <syslog.h>
int main(void)
{
openlog(NULL, LOG_PID | LOG_PERROR, LOG_USER);
/* ... */
syslog(LOG_INFO, "My message\n");
}
我也創建以下文件10-myconfig.conf
在/etc/rsyslog.d
:
# Create template for exec-name specific output files
$Template DynaFile,"/var/log/%PROGRAMNAME%.log"
# Printout format for user log
$Template UserLogFormat,"%pri-text%: %timegenerated% %syslogtag%%msg:::drop-last-lf%\n"
# Set user log
user.* ?DynaFile;UserLogFormat
正如所料,消息來到/var/log/syslog
和/var/log/my_program.log
。
但是,最後一行不會立即顯示在/var/log/my_program.log
中。最後一行看起來像是丟失了,但是在一些更多的行到達後,出現丟失的行。
它看起來像是有某種緩衝區,它沒有被刷新到文件,直到完整。我期望至少在每一條新線上都會發生這樣的衝突,因爲printf
的確如此,但似乎並不像那樣。
如何確保將日誌消息立即刷新到日誌文件?