zoukankan      html  css  js  c++  java
  • C++ log4cplus 类库的封装

    对 log4cplus 库的封装,修改自网路

    LogUtils.h

    /*
     * LogUtils.h
     *
     *  Created on: 2018年8月9日
     *      Author: oftenlin
     */
    
    #ifndef UTILS_LOGUTILS_H_
    #define UTILS_LOGUTILS_H_
    // LogUtils.h: interface for the LogUtils class.
    //
    //////////////////////////////////////////////////////////////////////
    
    #include "log4cplus/loglevel.h"
    #include "log4cplus/ndc.h"
    #include "log4cplus/logger.h"
    #include "log4cplus/configurator.h"
    #include "iomanip"
    #include "log4cplus/fileappender.h"
    #include "log4cplus/layout.h"
    #include <log4cplus/loggingmacros.h>
    
    using namespace log4cplus;
    using namespace log4cplus::helpers;
    
    #define PATH_SIZE 100
    //日志封装
    #define TRACE(p) LOG4CPLUS_TRACE(LogUtils::_logger, p)
    #define DEBUG(p) LOG4CPLUS_DEBUG(LogUtils::_logger, p)
    #define NOTICE(p) LOG4CPLUS_INFO(LogUtils::_logger, p)
    #define WARNING(p) LOG4CPLUS_WARN(LogUtils::_logger, p)
    #define FATAL(p) LOG4CPLUS_ERROR(LogUtils::_logger, p)
    
    // 日志控制类,全局共用一个日志
    class LogUtils
    {
    public:
        // 打开日志
        bool open_log();
    
        // 获得日志实例
        static LogUtils& instance();
    
        static Logger _logger;
    
    private:
        LogUtils();
    
        virtual ~LogUtils();
    
        //log文件路径及名称
        char _log_path[PATH_SIZE];
        char _log_name[PATH_SIZE];
    };
    
    
    #endif /* UTILS_LOGUTILS_H_ */

    LogUtils.cpp

    /*
     * LogUtils.cpp
     *
     *  Created on: 2018年8月9日
     *      Author: oftenlin
     */
    
    // Log.cpp: implementation of the Log class.
    //
    //////////////////////////////////////////////////////////////////////
    
    #include "LogUtils.h"
    #include <memory>
    
    //////////////////////////////////////////////////////////////////////
    // Construction/Destruction
    //////////////////////////////////////////////////////////////////////
    
    Logger LogUtils::_logger = log4cplus::Logger::getInstance("main_log");
    
    LogUtils::LogUtils()
    {
        snprintf(_log_path, sizeof(_log_path), "%s", "./log");
        snprintf(_log_name, sizeof(_log_name), "%s/%s.%s", _log_path, "app", "log");
    }
    
    LogUtils::~LogUtils()
    {
    }
    
    LogUtils& LogUtils::instance()
    {
        static LogUtils log;
        return log;
    }
    
    bool LogUtils::open_log()
    {
    
        int Log_level = 0;
    
        /* step 1: Instantiate an appender object */
        SharedAppenderPtr _append(new FileAppender(_log_name));
        _append->setName("file log test");
    
        /* step 2: Instantiate a layout object */
        std::string pattern = "[%p] [%d{%m/%d/%y %H:%M:%S}] [%t] - %m %n";
        std::auto_ptr<Layout> _layout(new PatternLayout(pattern));
    
    //    std::auto_ptr<Layout> pTTCLayout(new TTCCLayout());
        /* step 3: Attach the layout object to the appender */
        _append->setLayout(_layout);
    //    _append->setLayout(pTTCLayout);
        /* step 4: Instantiate a logger object */
    
        /* step 5: Attach the appender object to the logger  */
        LogUtils::_logger.addAppender(_append);
    
        /* step 6: Set a priority for the logger  */
        LogUtils::_logger.setLogLevel(Log_level);
    
    
    
        return true;
    }
  • 相关阅读:
    爱就是一个人一辈子
    硬件访问方法和混杂字符设备
    Linux内核等待队列
    深入浅出的讲解傅里叶变换(真正的通俗易懂)
    Linux用root强制踢掉已登录用户
    一文带你读懂宽带上下行速率不对称的原因
    FDD-LTE上下行带宽一样的,为什么上下行流量差别这么大
    linux alsa音频中采样率fs、比特率BCLK 、主时钟MCLK关系
    80211 发送速率选择算法分析
    imx6q 启动logo
  • 原文地址:https://www.cnblogs.com/oftenlin/p/9477947.html
Copyright © 2011-2022 走看看