实时和非实时应用程序的日志记录设施

9
我们正在开发运行在RT-Linux上的标准和实时应用程序。问题是,从实时和非实时进程记录应用程序跟踪的有效方法是什么?
“有效”意味着记录应用程序跟踪的过程不应该增加延迟等导致RT性能下降的情况。
最好将跟踪存储到一个带有时间戳的单个文件中,以便更容易跟踪进程之间的交互。

为什么不将日志记录到另一台机器上的UDP监听器? - Escualo
2个回答

4

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

我可以提供其他更轻量级的机制:

  • 使用统计/计数器来获取应用程序正在执行的内容
  • 以某种二进制格式编写/编码日志以进行离线处理。这种二进制格式可能更紧凑,因此更轻巧。

1

既然你使用的是linux,你可以使用syslog()

openlog()函数打开一个程序到系统日志记录器的连接。

这意味着你的程序会将消息转发给另一个程序,该程序可以是低优先级的。

如果你想要更加花哨的东西,那么可以使用boost logging


我认为syslog会导致将应用程序日志存储到每个应用程序的日志文件中? - fduff
1
syslog有一个“facility”的概念,然后syslog的配置文件(/etc/syslog.conf或/etc/rsyslog.conf?)决定如何处理每个facility(并且可以应用其他规则,例如基于严重性)。您可以让多个应用程序记录为单个facility,并将它们所有的日志消息放入一个文件中。 - timday
1
我们已经使用syslog和boost log一段时间了,情况还不错。当然,你需要记住,在RT应用程序中记录跟踪(例如使用boost log)会对性能产生影响,即增加延迟。 - fduff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接