Logging 易登录&x2B+;:在应用程序启动时清除日志文件 我最近在C++应用程序中采用了,我希望我的文档中有一些东西被忽略了。
我希望每次启动应用程序时都清除日志文件,而不是附加以前应用程序实例中的日志事件。我意识到我可以在任何日志记录事件之前在启动时删除日志文件,但这似乎是一种黑客行为Logging 易登录&x2B+;:在应用程序启动时清除日志文件 我最近在C++应用程序中采用了,我希望我的文档中有一些东西被忽略了。,logging,reset,app-startup,easylogging++,Logging,Reset,App Startup,Easylogging++,我希望每次启动应用程序时都清除日志文件,而不是附加以前应用程序实例中的日志事件。我意识到我可以在任何日志记录事件之前在启动时删除日志文件,但这似乎是一种黑客行为 任何帮助都将不胜感激。谢谢。如果不借助编辑EasyLogg++.h,我就无法找到这个问题的解决方案。显然,我希望这不是必需的,但我很确定,从v9.77开始,没有内置的工具可以在应用程序启动时重置日志文件。无论如何,如果我错了,请纠正我 检查代码时,我发现日志文件总是以追加模式创建的。似乎没有任何进一步的逻辑明确删除日志文件 对于任何对我
任何帮助都将不胜感激。谢谢。如果不借助编辑EasyLogg++.h,我就无法找到这个问题的解决方案。显然,我希望这不是必需的,但我很确定,从v9.77开始,没有内置的工具可以在应用程序启动时重置日志文件。无论如何,如果我错了,请纠正我 检查代码时,我发现日志文件总是以追加模式创建的。似乎没有任何进一步的逻辑明确删除日志文件 对于任何对我的黑客工作感兴趣的人,我在utils::File::newFileStream()中将传递到fstream构造函数的开放模式参数更改为包含fstream::trunc,而不是fstream::app。更改发生在easylogging++.h,v9.77的第1084行附近 以下是我所指的代码部分:
namespace utils {
class File : base::StaticClass {
public:
/// @brief Creates new out file stream for specified filename.
/// @return Pointer to newly created fstream or nullptr
static base::type::fstream_t* newFileStream(const std::string& filename) {
// CLW: Dec 29, 2014:
// I don't want a log file containing log events from past application instances,
// but there seems to be no built-in way to reset the log file when the app is started
// So, I'm changing the open mode in the following fstream constructor call to include
// fstream::trunc instead of fstream::app.
base::type::fstream_t *fs = new base::type::fstream_t(filename.c_str(),
base::type::fstream_t::out | base::type::fstream_t::trunc);
// base::type::fstream_t *fs = new base::type::fstream_t(filename.c_str(),
// base::type::fstream_t::out | base::type::fstream_t::app);
抱歉,代码格式太糟糕了。我只是按照easylogging++.h中当前的格式复制了代码,以便可以轻松识别。从v9.84版开始,可以通过定义 您需要在
之前添加#定义ELPP_FRESH_LOG_文件
#包括“easylogging++”
很可能您不想对每个包含都这样做。作者建议使用编译器标志。或者,您可以创建一个包装头 刚刚下载了easylogging++_v9.84.zip。打开easylogging++.h并注意到文件顶部的这一行:://easylogging++v9.83I确认easylogging++.h中的代码实际上正在处理ELPP_FRESH_LOG_文件编译器def(它可以工作)。美好的因此,这似乎只是一个不更新注释以反映正确版本号的情况。