轉 c 開源日誌庫log4cplus 封裝

2021-09-08 03:17:25 字數 2280 閱讀 3307

[cpp]view plain

copy

// log.h: inte***ce for the log class.

////

#if !defined(afx_log_h__b87f71e3_ffae_4cfa_a528_3f4f2ff7d69e__included_)

#define afx_log_h__b87f71e3_ffae_4cfa_a528_3f4f2ff7d69e__included_

#include "log4cplus/loglevel.h"

#include "log4cplus/ndc.h" 

#include "log4cplus/logger.h"

#include "log4cplus/configurator.h"

#include "iomanip"

#include "log4cplus/layout.h"

#include "const.h"

#include "common.h"

#include "main_config.h"

using

namespace log4cplus;  

using

namespace log4cplus::helpers;  

//日誌封裝

#define trace(p) log4cplus_trace(log::_logger, p)

#define debug(p) log4cplus_debug(log::_logger, p)

#define notice(p) log4cplus_info(log::_logger, p)

#define warning(p) log4cplus_warn(log::_logger, p)

#define fatal(p) log4cplus_error(log::_logger, p)

// 日誌控制類,全域性共用乙個日誌

class log  

;  #endif // !defined(afx_log_h__b87f71e3_ffae_4cfa_a528_3f4f2ff7d69e__included_)

log.cpp:

[cpp]view plain

copy

// log.cpp: implementation of the log class.

////

#include "log.h"

//// construction/destruction

//logger log::_logger = log4cplus::logger::getinstance("main_log");  

log::log()  

log::~log()  

log& log::instance()  

bool log::open_log()  

] [%t] - %m %n";  

std::auto_ptr_layout(new patternlayout(pattern));  

/* step 4: instantiate a logger object */

/* step 6: set a priority for the logger  */

log::_logger.setloglevel(log_level);  

return

true;  

}  

int log_level = main_config::instance().get_config().read("log_level", 0); 

main_config是我自己包裝的乙個配置類(參考:通過讀取配置設定log level。

使用:

#inlucde "log.h"

程式初始化的時候:

// 開啟日誌

if (!log::instance().open_log())

然後使用notice、fatal等就可以列印日誌到檔案。

[cpp]view plain

copy

#include "log.h"

....  

// 開啟日誌

if (!log::instance().open_log())  

.....  

notice("server init succ");  

fatal("server run failed");  

開源日誌系統 log4cplus 二

本文介紹了使用log4cplus有六個步驟,並提供了一些例子引導你了解log4cplus的基本使用。基本使用 使用log4cplus有六個基本步驟 下面通過一些例子來了解log4cplus的基本使用。using namespace log4cplus using namespace log4cplu...

開源日誌系統 log4cplus 七

經過短暫的熟悉過程,log4cplus已經被成功應用到了我的專案中去了,效果還不錯,除了上文提及的 功能之外,下面將介紹log4cplus提供的執行緒和套接字的使用情況。ndc 首先我們先了解一下log4cplus中嵌入診斷上下文 nested diagnostic context 即ndc。對lo...

開源日誌系統 log4cplus 六

一些可以改進之處 1.使用者自定義loglevel的實現機制不夠開放在第五篇中曾經介紹過如何實現使用者自行定義loglevel,為了實現比較理想的效果,甚至還需要改log4cplus 的源 2.生成logger物件的機制可以改進我在使用時候,經常需要在不同的檔案 函式中操作同乙個logger,雖然l...