log4cplus 直接创建logger 对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了log4cplus 直接创建logger 对象相关的知识,希望对你有一定的参考价值。

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

using namespace log4cplus;
using namespace log4cplus::helpers;

void CreateLogConsole(const char *strLogName)
{
    // 1、生成一个appender 对象
    SharedAppenderPtr pConsoleAppender(new ConsoleAppender());

    // 2、生成layout 对象并绑定到appender
    std::auto_ptr<Layout> pLayout(new SimpleLayout());
    pConsoleAppender->setLayout(pLayout);

    // 3、生成logger 对象
    Logger logSuyh = Logger::getInstance(LOG4CPLUS_TEXT(strLogName));

    // 4、设置Logger 优先级
    logSuyh.setLogLevel(ALL_LOG_LEVEL);

    // 5、将需要关联的Logger 的Appender 添加到Logger 上
    logSuyh.addAppender(pConsoleAppender);

    // 6、使用Logger
    LOG4CPLUS_ERROR(logSuyh, "Console self suyh.log");
    LOG4CPLUS_ERROR_FMT(logSuyh, "number: %d, string: %s", 100, "string text.");
}

void CreateLogFile(const char *strLogName, const char *strLogDir, const char *strLogFile)
{
    // 1、生成一个appender 对象
    MIFileAppender *miAppender = new MIFileAppender(LOG4CPLUS_TEXT(strLogDir));
    miAppender->init(strLogFile, 1);
    SharedAppenderPtr pAppender(miAppender);

    // 2、生成layout 对象并绑定到appender
    std::auto_ptr<Layout> pLayout(new SimpleLayout());
    pAppender->setLayout(pLayout);

    // 3、生成logger 对象
    Logger logSuyh = Logger::getInstance(LOG4CPLUS_TEXT(strLogName));

    // 4、设置Logger 优先级
    logSuyh.setLogLevel(ALL_LOG_LEVEL);

    // 5、将需要关联的Logger 的Appender 添加到Logger 上
    // 这里可以添加多个appender ,这样只要用该strLogName 的Logger 对象输出的日志将会
    // 同时输出到所有的appender 指定的文件或者控制台上
    logSuyh.addAppender(pAppender);

    // 6、使用Logger
    LOG4CPLUS_ERROR(logSuyh, "Log file self suyh.log");
}

int main()
{
    CreateLogFile("suyh_01", "suyh_log_dir", "log_file_01");
    CreateLogFile("suyh_02", "suyh_log_dir", "log_file_02");
    CreateLogFile("suyh_03", "suyh_log_dir", "log_file_03");

    log4cplus::Logger logSuyh01 = log4cplus::Logger::getInstance("suyh_01");
    log4cplus::Logger logSuyh02 = log4cplus::Logger::getInstance("suyh_02");
    log4cplus::Logger logSuyh03 = log4cplus::Logger::getInstance("suyh_03");

    LOG4CPLUS_INFO(logSuyh01, "log4cplus suyh01 log text...");
    LOG4CPLUS_INFO(logSuyh02, "log4cplus suyh02 log text...");
    LOG4CPLUS_INFO(logSuyh03, "log4cplus suyh03 log text...");
    
    return 0;
}

 

以上是关于log4cplus 直接创建logger 对象的主要内容,如果未能解决你的问题,请参考以下文章

使用log4cplus时遇到的链接错误:无法解析的外部符号 "public: static class log4cplus::Logger __cdecl log4cplus::Logger

log4cplus使用-日志重定向

log4cplus使用-自定义日志等级

在单进程单线程或单进程多线程下实现log4cplus写日志并按大小切割

如何将 log4cplus 日志文件更改为 utf8

创建日志打印对象