【问题标题】:Logging frameworks and synchronization in multi-threaded apps多线程应用程序中的日志框架和同步
【发布时间】:2013-05-14 21:45:11
【问题描述】:

我想在多线程应用程序中使用像 log4cxx 这样的日志框架。

如果日志输出到文件,则需要正确序列化消息。 我在问自己这些框架如何(以及是否)在不使用某种同步对象的情况下正确序列化输出。

我猜如果它使用同步对象(例如访问队列以记录消息),这可能会导致所涉及线程的行为发生变化,因此也会改变行为(和错误......)整个记录的应用程序。

【问题讨论】:

    标签: multithreading logging


    【解决方案1】:

    log4cxx 确实是同步的,就像其他 log4XXX 框架一样。同步是在附加程序中完成的,并且对于保证日志条目的内容不会混合在一起是必要的。这不会改变线程的行为,但线程确实会遇到小的性能损失。与记录到文件时的 I/O 性能损失相比,性能损失很小。

    如果您仍然担心性能,您可以考虑使用异步日志记录(使用在单独的线程中处理日志记录的AsyncAppender。使用异步方法您不能保证记录消息(例如,如果应用程序在日志线程处理消息)。提高性能的最简单方法是减少日志量。

    【讨论】:

      猜你喜欢
      • 2011-06-28
      • 1970-01-01
      • 1970-01-01
      • 2018-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多