【发布时间】:2010-12-19 15:01:05
【问题描述】:
我有一个用 C++ 编写的多线程服务器应用程序,我需要实现一个良好且相当高效的日志记录系统。高效我的意思是无论配置多少日志,应用程序都不应该停止。所以最好有一些线程专门用于编写它的日志文件。
我想将服务器组件处理的每个请求记录在它自己的文件中,有一个轮换系统可以删除比某个阈值更早的文件。一个请求由 2 个线程处理,一个执行一些转换工作,一个工作线程是线程池(BOOST 线程池)的一部分,它执行所有其他操作(数据库获取、计算等)。所以日志记录需要是线程安全的,我必须能够为级别配置它,并让每个 Logger 类实例(我自己的实现某个库的记录器)接受一个新的文件名。以便为特定请求创建每个新的 Logger 实例。
我的最终问题是:哪个日志库允许我为每个请求创建一个新的日志文件并允许我配置日志级别? (即:错误、警告、严重等)
或者我应该自己实现所有内容? (不记录不是一种选择)
我查看了 Boost::Logging v2,由于保存所有状态(级别、文件)的主记录器对象是全局的,因此我无法更改每个请求的文件。
我查看了 templog.org,但我什至无法编译。无论我包含什么或设置了哪些引用,它都永远找不到 templog 命名空间或其任何类。
【问题讨论】:
标签: c++ multithreading logging