Boost.log - 使用文件轮换时获取当前文件名
Boost.log - Get current file name when using file rotation
我知道这个问题可能是重复的,但我想知道在有文件名轮换的文件后端时是否仍然无法获取当前日志文件名?!
提前致谢。
编辑:
对于文件名轮换,我的意思是如下所示,当日志文件轮换时文件名会发生变化:
auto fileSink = logging::add_file_log(
keywords::file_name = "..\Logs\%Y%m%d_Tracing_%H%M%S.log",
keywords::rotation_size = 2 * 1024 * 1024,
keywords::min_free_space = 15 * 1024 * 1024,
keywords::open_mode = std::ios_base::app);
如sehe所述:
It's a property of the backend.
因此我设法将接收器初始化与相应的后端分开:
typedef sinks::synchronous_sink<sinks::text_file_backend> fileSink;
boost::shared_ptr<fileSink> fileSinkSink;
fileSinkSink = logging::add_file_log(
keywords::file_name = "..\Logs\%Y%m%d_Tracing_%H%M%S.log",
keywords::rotation_size = 2* 1024 * 1024,
keywords::min_free_space = 15 * 1024 * 1024,
keywords::open_mode = std::ios_base::app);
现在我发现我可以访问后端,从而访问当前文件名:
char currentFileName[200] = "";
strcpy(currentFileName, fileSinkSink->locked_backend().get()->get_current_file_name().string().c_str());
感谢您的提示!它解决了我的问题!
我知道这个问题可能是重复的,但我想知道在有文件名轮换的文件后端时是否仍然无法获取当前日志文件名?!
提前致谢。
编辑:
对于文件名轮换,我的意思是如下所示,当日志文件轮换时文件名会发生变化:
auto fileSink = logging::add_file_log(
keywords::file_name = "..\Logs\%Y%m%d_Tracing_%H%M%S.log",
keywords::rotation_size = 2 * 1024 * 1024,
keywords::min_free_space = 15 * 1024 * 1024,
keywords::open_mode = std::ios_base::app);
如sehe所述:
It's a property of the backend.
因此我设法将接收器初始化与相应的后端分开:
typedef sinks::synchronous_sink<sinks::text_file_backend> fileSink;
boost::shared_ptr<fileSink> fileSinkSink;
fileSinkSink = logging::add_file_log(
keywords::file_name = "..\Logs\%Y%m%d_Tracing_%H%M%S.log",
keywords::rotation_size = 2* 1024 * 1024,
keywords::min_free_space = 15 * 1024 * 1024,
keywords::open_mode = std::ios_base::app);
现在我发现我可以访问后端,从而访问当前文件名:
char currentFileName[200] = "";
strcpy(currentFileName, fileSinkSink->locked_backend().get()->get_current_file_name().string().c_str());
感谢您的提示!它解决了我的问题!