您如何管理日志记录性能?

Ale*_*lex 4 c++ linux logging

我们有一个消息处理系统,其中低延迟是至关重要的.最近,我发现虽然我们通过我们的系统保持高利率,但我们看到一些"异常值".(消息比它们需要的时间长得多)当我们删除日志记录时,我们的系统不会显示这些异常值.

现在我们的日志记录基本上只是一个包装的ostream,其中一些日志级功能类似于log4j(调试,致命,调试等).

我想知道,其他人如何管理日志记录性能,特别是在消息处理活动中?您如何管理这些I/O绑定活动?你把它条纹化了吗?你转移到数据库了吗?

任何优化日志记录的建议都值得赞赏

注意:我认识到我们的系统可能存在导致异常值的其他问题,但是为了这个问题,我只对记录优化感兴趣,谢谢.

另外:我们的系统必须进行日志记录.

Rod*_*ddy 10

我想这在某种程度上取决于操作系统.

在win32上,我们的日志记录子系统简单地将消息排队等待处理磁盘I/O的日志记录线程.

这将磁盘I/O性能与对时间要求严格的线程分离,并使我们能够很好地控制队列被锁定的方式和时间.