【问题标题】:linux c program is there another way to read logs than reading files in /var/log?linux c程序除了读取/ var / log中的文件之外,还有另一种读取日志的方法吗?
【发布时间】:2018-03-23 07:14:48
【问题描述】:

你好,亲爱的 stackoverflow 社区,

目前我正在用 c 编写一个工具来监视 /var/log 中的 linux 日志文件,c 程序直接从日志文件中读取日志 但是从 c 程序读取日志文件并不是很好,因为用户可以操作日志文件或将日志保存在不同的文件中,例如相反,它保存在 syslog 中,它保存在 syslog.1 中。

由于这些缺点,我想问在 linux 中是否有任何替代方法来代替读取文件? 也许可以使用捕获这些日志的内核模块?

感谢您的任何回答!

【问题讨论】:

  • 没有。顺便说一句,要在 linux 上进行监控,请使用 inotify
  • 注意:syslog 在网络上工作(UDP,IIRC) 可以将日志消息发送到远程机器,并将它们存储在那里(以及),您甚至可以设置自己的消息的接收者。
  • 我猜您需要一个 API 来抽象对日志文件的读取访问权限。空无一人。要读取日志,您必须打开文件 -- 无论它在哪里,不一定在生成日志消息的系统上。
  • @wildplasser 非常感谢您的回答!你知道我怎么能做到这一点,或者你有什么资料可以让我了解更多关于我如何在 c 中做到这一点?
  • tools.ietf.org/html/rfc3164 1) syslogd 有一个配置文件。 2) 设置 UDP 接收器相对容易。

标签: c linux logging linux-kernel


【解决方案1】:

另一种方法是使用/proc/kmsg/dev/kmsg。用户无法修改这些日志来源。格式会有所不同,但您可以更改程序以适应它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-18
    • 2012-10-01
    • 1970-01-01
    • 2023-01-23
    • 1970-01-01
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多