使用boost :: log配置文件变量

时间:2017-11-21 15:54:44

标签: c++ boost boost-log

我在应用程序中使用Boost 1.63.0 Log库。要初始化各种日志文件,我正在使用boost::log::init_from_stream(...)方法从配置INI文件配置接收器。

我最初遇到了升压日志的文件旋转行为问题。该文件正在当前工作目录中创建,然后移至" Target"目录上的文件旋转触发器或应用程序关闭。所需的行为是直接在" Target"中创建文件。目录。我在这篇文章的帮助下纠正了这个问题:boost::log add_file_log not writing if app exits with CTRL_CLOSE_EVENT

简而言之,它表示提供" FileName"带有完整路径信息的关键字,而不仅仅是名称。这有效,但我想知道是否有一个很好的方式来清理"配置文件。

例如,INI文件当前要求您同时指定" Target"和" FileName"关键词如下:

Target="C:\\ProgramData\\MyApplication\\Logs"
FileName="C:\\ProgramData\\MyApplication\\Logs\\AppLog_%N.log"

能够仅指定"目标"真的很高兴。目录然后在" FileName"中使用该变量变量定义。这只会改变一件事,这将使任何未来的变化变得更加简单。类似的东西:

#Define Target Directory for file rotation
Target="C:\\ProgramData\\MyApplication\\Logs"

#Define File Name pattern
FileName="%Target%\\AppLog_%N.log"
     ---  OR ---
FileName="$(Target)\\AppLog_%N.log"

这可能吗?

1 个答案:

答案 0 :(得分:1)

Boost.Log不执行变量扩展,您必须自己执行此操作。您可以致电settings将设置文件加载到parse_settings。然后,您可以对该容器进行操作并扩展变量。完成后,您可以通过调用init_from_settings来使用它来初始化日志记录库。