gpt4 book ai didi

c++ - log4cpp(Linux): can't write message into logfile

转载 作者:太空狗 更新时间:2023-10-29 12:14:41 24 4
gpt4 key购买 nike

我在linux下用cpp,想用log4cpp。

我试过在 windows 下用 vs2013 使用它,效果很好。现在我在 Linux 下工作,我遇到了一个问题:
它不适用于文件。这是我的测试代码:

int main(int argc, char* argv[])
{
fstream logFile;
logFile.open("log", std::ios::app);
log4cpp::OstreamAppender* osAppender = new log4cpp::OstreamAppender("osAppender", &logFile);
// I tried cout as below and it worked, but if I tried as above with a file, it didn't work anymore.
// I mean the "log" file could be created but the message can't be written down in the file. The file is always empty.
//log4cpp::OstreamAppender* osAppender = new log4cpp::OstreamAppender("osAppender", &cout);

osAppender->setLayout(new log4cpp::BasicLayout());

log4cpp::Category& root = log4cpp::Category::getRoot();
root.addAppender(osAppender);
root.setPriority(log4cpp::Priority::DEBUG);
root.error("Hello log4cpp in aError Message!");
root.warn("Hello log4cpp in aWarning Message!");
log4cpp::Category::shutdown();

cout<<"test";

return 0;
}

我多次运行这个测试代码,没有错误,程序成功完成,因为我可以在控制台看到“test”。但是文件总是空的。

对了,sudo chmod +777 log已经搞定了。所以这不可能是权限的问题。

最佳答案

问题出在这里:

 fstream logFile;
logFile.open("log", std::ios::app);

我需要的是:
如果没有文件,则创建它并在其中写入消息;
如果已经有该文件,追加其中的信息。

为了实现这个目标,我们有两种方式:

 ofstream logFile;
logFile.open("log", std::ios::app);

 fstream logFile;
logFile.open("log", std::ios::app | std::ios::out);

关于c++ - log4cpp(Linux): can't write message into logfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29848076/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com