0
#include <log4cplus/configurator.h>
#include <log4cplus/fileappender.h>
#include <log4cplus/initializer.h>
#include <log4cplus/layout.h>
#include <log4cplus/logger.h>
#include <log4cplus/loggingmacros.h>

#include <string>

int main(int argc, char* argv[]) {

    log4cplus::SharedAppenderPtr appender(new log4cplus::FileAppender("test.log"));
    appender->setName("mainLog");

    std::string pattern = "[%-5p][%D{%Y/%m/%d %H:%M:%S:%q}][%-l][%t] %m%n";
    std::auto_ptr<log4cplus::Layout> layout(new log4cplus::PatternLayout(pattern));
    appender->setLayout(layout);

    mainLog = log4cplus::Logger::getInstance(LOG4CPLUS_TEXT("mainLog"));
    mainLog.addAppender(appender);

    LOG4CPLUS_INFO(mainLog, LOG4CPLUS_TEXT("Execution started!"));
    return 0;
}

The above code should work according to the every guide I have managed to find on the subject, but it won't compile. The line:

appender->setLayout(layout);

underscores layout and says:

cannot convert argument 1 from 'std::auto_ptr<log4cplus::Layout>' to 'std::unique_ptr<log4cplus::Layout,std::default_delete<_Ty>>

What gives?

Karlovsky120
  • 6,212
  • 8
  • 41
  • 94

0 Answers0