我尝试将日志消息写入磁盘,因此我选择FileAppender(同步无缓冲区)。但速度不太好。 考虑以下代码
const std::string pattern("%d %m%n");
log4cxx::LayoutPtr layPtr = new PatternLayout(pattern);
FileAppender *fileappender = new FileAppender(layPtr, "log4cxx_bench.log", true);
const std::string line(30, 'k');
LOG4CXX_INFO(logger1, line);
花了将近4秒钟。文件大小为60MB。因此速度为15MB / s。我尝试使用Xcode进行配置,配置文件图像如下:
更改为与缓冲区同步。几乎一样。我不知道如何优化它。
答案 0 :(得分:1)
简而言之:默认情况下记录较少。
您的大多数LOG4CXX调用应该处于生产系统中未默认记录的级别。当出现问题并且您想要调试系统的某个组件时,您需要调整配置,以便该组件的日志记录在更详细的级别上完成。这是为了通过减少记录来加速您的应用程序。
另一个想法是配置您的LOG4CXX,以便为每条日志消息打印更少的附加信息(如果您不需要它们)。
或者,您可以更改日志文件以使用更快的设备,例如闪存SSD甚至tmpfs。