微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

持续监控Systemd日志

我正在使用systemd日志来创build一个自定义的日志处理程序。 我正在尝试使用sd_journal API,但我有几个问题:

是否有可能在没有轮询的情况下收听运行时期刊 (SD_JOURNAL_RUNTIME_ONLY)? SD_JOURNAL_FOREACH_DATA和sd_journal_get_data并没有多说这个。

在你看来, 这是一个很好的devise吗?

有没有一种方法来了解运行时日志在何处被转发 ? 我做了“systemctl status systemd-journald.service”,服务状态正在运行。 但是,当我尝试使用sd_journal_open阅读日记时,它不显示任何条目。 我可以通过journalctl看到条目。 我想在不读日志文件的情况下(通过sniffing / run / log / journal这是一个unix域套接字)来避免磁盘IO。

这里是我使用的示例代码

#include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <systemd/sd-journal.h> #include <systemd/sd-daemon.h> int main(int argc,char *argv[]) { int ret_val = 0; int count = 0; sd_journal *jd; sd_journal_print(LOG_INFO,"Hello World,this is PID %lu!",(unsigned long) getpid()); do { ret_val = sd_journal_open (&jd,SD_JOURNAL_SYstem | SD_JOURNAL_RUNTIME_ONLY | SD_JOURNAL_LOCAL_ONLY); if (ret_val != 0) { fprintf(stderr,"Failed to open journal: %sn",strerror(-ret_val)); break; } printf ("Current Journal was loaded successfully!n"); const void *d; size_t l; SD_JOURNAL_FOREACH_DATA (jd,d,l) { printf("%.*sn",(int)l,(const char*) d); count++; } sd_journal_close(jd); printf ("# of Journal entries read: %dn",count); } while (0); return 0; }

哪种方法更好地阅读C#中的Windows事件日志? WMI或EventLog

重复使用,并添加到500错误,以获得更好的肥皂属性

使用三通(或同等)但限制最大文件大小或旋转到新文件

写入Windows应用程序事件日志,无需注册事件源

如何从Java写入Windows事件日志?

在Windows中的文本或日志文件之后。 记事本++也许?

Nginx中匿名化IP日志logging?

Elastic Beanstalk上的Docker部署不收集Nginx日志

在大文件上格式化多个string

AU3Recorder未运行

我花了一段时间才弄清楚,但问题相当简单。 问题在于使用

SD_JOURNAL_RUNTIME_ONLY

而journald 存储被指定为持久性的

对我而言,持久性日志不会进入运行时日志缓冲区是非直观的。 因此,模拟journalctl -f功能的唯一方法是打开当地的期刊并寻找尾巴。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐