我在应用程序中使用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"
这可能吗?
答案 0 :(得分:1)
Boost.Log不执行变量扩展,您必须自己执行此操作。您可以致电settings
将设置文件加载到parse_settings
。然后,您可以对该容器进行操作并扩展变量。完成后,您可以通过调用init_from_settings
来使用它来初始化日志记录库。