加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 最新的系统日志消息被延迟

发布时间:2020-12-16 07:11:32 所属栏目:百科 来源:网络整理
导读:我的程序使用这种命令将信息输出到日志文件: #include syslog.hint main(void){ openlog(NULL,LOG_PID | LOG_PERROR,LOG_USER); /* ... */ syslog(LOG_INFO,"My messagen");} 我还在/etc/rsyslog.d中创建了以下文件10-myconfig.conf: # Create template f
我的程序使用这种命令将信息输出到日志文件:

#include <syslog.h>

int main(void)
{
    openlog(NULL,LOG_PID | LOG_PERROR,LOG_USER);
    /* ... */
    syslog(LOG_INFO,"My messagen");
}

我还在/etc/rsyslog.d中创建了以下文件10-myconfig.conf:

# 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那样,但它似乎并没有像那样工作.

如何确保将日志消息立即刷新到日志文件中?

解决方法

syslog工具的目的是接受可能快速生成的消息,并最终将它们保存在文件中.这样的设施可以追溯到20世纪50年代(可能在之前)的操作系统.

日志文件没有最后几条消息是正常的.消息保存在内核缓冲区中. dmesg命令访问内存缓冲区.也许你可以用它来查看日志的最新部分?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读