我尝试将日志消息写入磁盘,因此选择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进行配置文件,配置文件图像如下:
更改为与缓冲区同步。差不多一样。我不知道如何优化它。
最佳答案
简而言之:默认情况下,日志较少。
您的大多数LOG4CXX调用应该处于生产系统中默认未记录的级别。当出现问题并想要调试系统的某些组件时,可以调整配置,以便对该组件进行更详细的日志记录。这是通过减少日志记录来加快应用程序的速度。
另一个想法是对LOG4CXX进行配置,以便为每个日志消息打印更少的其他信息(如果不需要)。
另外,您可以更改日志文件以使用速度更快的设备,例如闪存SSD甚至tmpfs。