【发布时间】:2025-12-28 09:10:12
【问题描述】:
我已经用 C++ 搜索了几天的日志库,但不知何故,我对现有的解决方案(如 boost logging 或 Pantheios)不太满意。最初我是一名 Java 开发人员。我想要一个日志库,它的行为更像一个对象。我想做以下事情:
- 创建日志对象的实例
Logger(filepath, filename) - 并使用
log(serverity, message)方法在文本文件中记录不同的消息
此功能的突出问题是我事先不知道这些日志记录对象将存在多少,或者这些文件是否具有相同的文件路径。也许我可以用 boost 来处理这个问题,但我没有在文档的“文本多文件后端”部分得到 example。特别是示例中的这段代码 sn-ps 将做什么:
片段 1.
// Set up the file naming pattern
backend->set_file_name_composer
(
sinks::file::as_file_name_composer(expr::stream << "logs/" << expr::attr< std::string >("RequestID") << ".log")
);
片段 2。
// Set the formatter
sink->set_formatter
(
expr::stream
<< "[RequestID: " << expr::attr< std::string >("RequestID")
<< "] " << expr::smessage
);
这段代码在我脑海中提出了 4 个问题(或多个问题):
- 这是否意味着我只需要设置属性 RequestID 并且记录器将决定将消息放入哪个文件?我该怎么做?
- 甚至可以通过 boost 将日志文件放在不同的路径中吗?
- 如果不同的线程访问同一个文件会发生什么?
- init_logging() 中的这段代码会影响boost 日志库的应用程序范围的行为吗?这是由某种......全局变量完成的吗?
也许我的想法太天真了。有没有办法得到我在帖子开头提到的东西?
【问题讨论】:
标签: c++ logging boost boost-log