如何一次使用log4cpp记录多个变量?

Jör*_*yer 3 c++ logging log4cpp

如何使用log4cpp记录多个字符串?

例如,如果我想将所有argv记录到main:

#include <iostream>
#include <log4cpp/Category.hh>
#include <log4cpp/FileAppender.hh>
#include <log4cpp/PatternLayout.hh>

using namespace std;

int main(int argc, char* argv[]) {
    log4cpp::Appender *appender = new log4cpp::FileAppender("FileAppender","mylog");
    log4cpp::PatternLayout *layout = new log4cpp::PatternLayout();
    layout->setConversionPattern("%d: %p - %m %n");
    log4cpp::Category& category = log4cpp::Category::getInstance("Category");
    appender->setLayout(layout);
    category.setAppender(appender);
    category.setPriority(log4cpp::Priority::INFO); 

    category.info("program started"); // this works fine, I see it in the logfile

    for(int i=0; i<argc; ++i) {
        // next line does not compile:
        category.info("argv["<<i<<"] = '"<<argv[i]<<"'");
    }

    return 0;
}   
Run Code Online (Sandbox Code Playgroud)

这条线

category.info("argv["<<i<<"] = '"<<argv[i]<<"'");
Run Code Online (Sandbox Code Playgroud)

不编译.显然,记录器不能作为ostream工作.什么是log4cpp记录这样的东西,一次更好?

Joh*_*web 6

您有两种选择:

我会选择后者.