Important: Please read the Qt Code of Conduct -

Multiple instances of log4cpp in Qt

  • Hi ,

    In my project there are multiple module, need different log files for each module in different folders. I have created multiple instances of log4cpp. But logs are appending only into single file of last instance created.

    Please let me know, can we create multiple instances of log4cpp.
    Verified object names using setObjectName() and Objectname(), all object names are different.
    Thank you in advance.

  • Lifetime Qt Champion

    @yuvaram How is your question related to Qt?
    On the project page ( there is an example logging to two different targets: console and a file:

    int main(int argc, char** argv) {
    	log4cpp::Appender *appender1 = new log4cpp::OstreamAppender("console", &std::cout);
    	appender1->setLayout(new log4cpp::BasicLayout());
    	log4cpp::Appender *appender2 = new log4cpp::FileAppender("default", "program.log");
    	appender2->setLayout(new log4cpp::BasicLayout());
    	log4cpp::Category& root = log4cpp::Category::getRoot();
    	log4cpp::Category& sub1 = log4cpp::Category::getInstance(std::string("sub1"));
    	// use of functions for logging messages
    	root.error("root error");"root info");
    	sub1.error("sub1 error");
    	sub1.warn("sub1 warn");
    	// printf-style for logging variables
    	root.warn("%d + %d == %s ?", 1, 1, "two");
    	// use of streams for logging messages
    	root << log4cpp::Priority::ERROR << "Streamed root error";
    	root << log4cpp::Priority::INFO << "Streamed root info";
    	sub1 << log4cpp::Priority::ERROR << "Streamed sub1 error";
    	sub1 << log4cpp::Priority::WARN << "Streamed sub1 warn";
    	// or this way:
    	root.errorStream() << "Another streamed error";
    	return 0;

Log in to reply