首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >log4cpp (linux):无法将消息写入日志文件

log4cpp (linux):无法将消息写入日志文件
EN

Stack Overflow用户
提问于 2015-04-24 12:54:02
回答 1查看 787关注 0票数 2

我在Linux下使用cpp,我想使用log4cpp。

我试着用vs2013在windows下使用它,它运行得很好。现在我在Linux下工作,我遇到了一个问题:

它不适用于文件。这是我的测试代码:

代码语言:javascript
复制
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;
}

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

顺便说一句,sudo chmod +777 log已经完成了。所以这不可能是许可问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-24 15:46:32

问题在于:

代码语言:javascript
复制
 fstream logFile;
 logFile.open("log", std::ios::app);

我需要的是:

如果没有文件,创建它并在其中写入消息;

如果有该文件,请仔细查看其中的消息。

为了实现这一目标,我们有两种方法:

代码语言:javascript
复制
 ofstream logFile;
 logFile.open("log", std::ios::app);

代码语言:javascript
复制
 fstream logFile;
 logFile.open("log", std::ios::app | std::ios::out);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29848076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档