【问题标题】:logging facilities for realtime and non realtime applications实时和非实时应用程序的日志记录工具
【发布时间】:2013-01-07 12:22:43
【问题描述】:

我们正在开发在 RT-Linux 上运行的标准和实时应用程序。 问题是,从实时和非实时进程记录应用程序跟踪的有效方法是什么

高效,我的意思是记录应用程序跟踪的过程不应该通过增加延迟等导致 RT-perf 命中。

理想情况下,跟踪应存储在带有时间戳的单个文件中,以便更轻松地跟踪进程之间的交互。

【问题讨论】:

  • 为什么不登录到另一台机器上的 UDP 监听器?

标签: c++ linux logging real-time


【解决方案1】:

由于你在linux上,你可以使用syslog()

openlog() 为程序打开与系统记录器的连接。

这意味着您的程序将消息转发到另一个程序,该程序的优先级可能较低。

如果你想要更花哨的东西,那么boost logging

【讨论】:

  • 我认为syslog 会导致将应用程序日志存储到每个应用程序的日志文件中?
  • syslog 具有“设施”的概念,然后 sylog 的配置(/etc/syslog.conf 或 /etc/rsyslog.conf ?)决定如何处理每个设施(并且可以应用其他规则,例如根据严重程度)。您可以将多个应用程序记录为一个设施,并将其所有日志消息放入一个文件中。
  • 我们使用 syslog 和 boost log 已经有一段时间了,一切进展顺利。当然,您需要记住 RT 应用程序中的记录跟踪(例如,使用 boost log)将具有性能。命中,即延迟增加。
【解决方案2】:

对于实时日志记录,我建议使用与裸记录到文件不同的方法。将大量信息写入文件影响您的表现。

我可以建议其他更轻量级的机制S:

  • 使用统计信息/计数器来填充您的应用程序正在执行的操作
  • 以某种二进制格式写入/编码日志,以便离线处理。这种二进制格式可能更紧凑,因此更轻。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多