log4cplus的一個常用封裝例項
、、VLog.h #pragma once #ifndef VLOG_H #define VLOG_H #include <log4cplus/logger.h> #include <log4cplus/layout.h> #include <log4cplus/loglevel.h> #include <log4cplus/fileappender.h> #include <log4cplus/consoleappender.h> #include <log4cplus/helpers/loglog.h> using namespace log4cplus; using namespace helpers; /** * 使用log4cplus * @param logfile 記錄的檔案路徑,如“main.log” * @param format 格式化字首,預設%d [%l] %-5p : %m %n * @param bebug 是否列印bebug資訊,預設true * @param lv 設定日記級別 * @return */ void InitLog4cplus( const wchar_t* logfile, const bool console = true, const bool bebug = true, LogLevel lv = DEBUG_LOG_LEVEL, const wchar_t* format = L"%d : %m%n" /*%d %-5p [%c < %l] : %m %n*/ ); /** * 獲得根日誌 * @return */ Logger GetRootLogger(void); /** * 獲得子日誌 * @param child 子日誌名,如,sub;sub.sub1 * @return */ Logger GetSubLogger(const wchar_t* sub); /** * 關閉日誌系統 */ void ShutdownLogger(void); #endif /* VLOG_H */
//VLog.cpp
/************************************************************************/ /* 使用規則: */ /* 需要log4cplus動態/靜態連結庫及標頭檔案 */ /* log4cplus.lib + log4cplus.dll 為動態連結庫。log4cplusS.lib為靜態連結庫 */ /************************************************************************/ #include "VLog.h" void InitLog4cplus(const wchar_t* logfile, const bool console, const bool bebug, LogLevel lv, const wchar_t* format) /* NOT_SET_LOG_LEVEL ( -1) :接受預設的LogLevel,如果有父logger則繼承它的 LogLevelALL_LOG_LEVEL ( 0) :開放所有log資訊輸出 TRACE_LOG_LEVEL ( 0) :開放trace資訊輸出(即ALL_LOG_LEVEL) DEBUG_LOG_LEVEL (10000) :開放debug資訊輸出 INFO_LOG_LEVEL (20000) :開放info資訊輸出 WARN_LOG_LEVEL (30000) :開放warning資訊輸出 ERROR_LOG_LEVEL (40000) :開放error資訊輸出 FATAL_LOG_LEVEL (50000) :開放fatal資訊輸出 OFF_LOG_LEVEL (60000) :關閉所有log資訊輸出 */ { // 0.日誌系統配置:設定顯示debug資訊 LogLog::getLogLog()->setInternalDebugging(bebug); // 建立螢幕輸出Appender,不採用stderror流,不採用立刻寫入模式 SharedAppenderPtr pappender1(new RollingFileAppender(logfile, 1024 * 1024 * 200, 50, false)); // 生成的日誌檔名稱,檔案最大值(最小1 * 200 M),擴充套件50檔案個數,不採用立刻寫入模式 // 2.例項化一個layout物件 // 2.1建立layout佈局格式 std::auto_ptr<Layout> playout1(new PatternLayout(format)); // 3.將layout物件繫結(attach)到appender物件 // pappender.setLayout(std::auto_ptr<Layout> layout); pappender1->setLayout(playout1); // 4.Logger :記錄器,儲存並跟蹤物件日誌資訊變更的實體,當你需要對一個物件進行記錄時,就需要生成一個logger。 Logger rootLogger = Logger::getRoot(); // 5.將appender物件繫結(attach)到logger物件,如省略此步驟,標準輸出(螢幕)appender物件會繫結到logger rootLogger.addAppender(pappender1); if (console) { // 1.Appenders :掛接器,與佈局器緊密配合,將特定格式的訊息輸出到所掛接的裝置終端 (如螢幕,檔案等等)。 SharedAppenderPtr pappender2(new ConsoleAppender(false, false)); std::auto_ptr<Layout> playout2(new PatternLayout(format)); pappender2->setLayout(playout2); rootLogger.addAppender(pappender2); } // 6.設定logger的優先順序,如省略此步驟,各種有限級的訊息都將被記錄 rootLogger.setLogLevel(lv); } Logger GetRootLogger(void) { return Logger::getRoot(); } Logger GetSubLogger(const wchar_t* sub) { return Logger::getInstance(sub); } void ShutdownLogger(void) { Logger::getRoot().shutdown(); }
<p>#include "VLog.h"</p><p>int _tmain(int argc, _TCHAR* argv[])
{
// 加入log4cplus
// 初始化log4cplus
InitLog4cplus(L"main.log");</p><p> // 日誌物件:測試一
log4cplus::Logger test1 = GetSubLogger(L"test1");
// 日誌物件:測試一 第一次測試
log4cplus::Logger test1_01 = GetSubLogger(L"test1.01");</p><p> // 型別日誌記錄
LOG4CPLUS_DEBUG(test1_01, "you can log like this :" << "hello " << 100 << '!');</p><p> // 關閉日誌
ShutdownLogger();
}
</p>
FROM: http://blog.csdn.net/eclipser1987/article/details/6904301
相關推薦
log4cplus的一個常用封裝例項
、、VLog.h #pragma once #ifndef VLOG_H #define VLOG_H #include <log4cplus/logger.h> #include <log4cplus/layout.h> #include <
封裝一個常用的js工具類
/** * @author:水痕 * @timer:2016-07-28 * @email:[email protected] * @version:1.0 * @title:封裝一個自己常用的工具類js * @note: */ ; (f
unity常用的例項化一個GameObject的三種方法
1, 直接拖物件賦值。public GameObject cube;2, Find函式 public GameObject cube; public void ChangeColor2Red() { print ("Change cube color to red"
多態、Object類和 JDK常用封裝類型
事物 引用 null static 包裝 變化 end number demo 多態 定義:某一類事物的多種存在形態。 多態的體現:父類的引用指向了自己的子類對象。父類的引用也可以接收自己的子類對象。 多態的前提:必須是類與類之間有關系,要麽繼承,要麽實現。通常還有一個前提
java7JDK的常用封裝類型
我們 tokenizer 針對 tokenize ken 所有 分析器 數字 抽象 Java Scanner類 Java 5添加了java.util.Scanner類,這是一個用於掃描輸入文本的新的實用程序。它是以前的StringTokenizer和Matcher類之間
我的Android進階之旅------>Android關於Log的一個簡單封裝
eight ron track 100% oid content amp 嚴重 center android.util.Log類,能夠方便地用於在編碼調試過程中打印日誌。可是在公布後的產品中,假設有太多的日誌打印。則會嚴重地影響性能。對android.util.Lo
django常用封裝
hex .sh 返回 config turn .get end con res #encoding:utf-8from django.shortcuts import render_to_responseimport hashlibfrom binascii import
一個常用的通過curl發送HTTP請求的函數
請求方式 multi return ini als 參數 一個 pic def function: function curl_get($url, $params) { return curl_http($url, $params, ‘GET‘); } func
python中如何統計一個類的例項化物件
類中的靜態變數 需要通過類名.靜態變數名 來修改 ;通過物件不能修改 python中如何統計一個類的例項化物件?? 1 class Person: 2 #靜態變數count,用於記錄類被例項化的次數 3 count = 0 4 5
前後端分離業務邏輯常用封裝函式(一)
1.陣列去空: function clear_arr_trim(array) { for(var i = 0 ;i<array.length;i++){ if(array[i] == "" || (array[i] == null) || typeo
公鑰,證書,以及公鑰基礎通訊設施模型的一個詳細實現例項流程。
說是加密,不是隻用一種加密方法,而是多種方法協作,達到我們的加密目的。 加密不是說加密完,就完事了,還要考慮第三方能不能解密 如果解密了該怎麼辦? 怎麼加密更快? 如果對方解密了?我們怎麼確保被解密的資料不被篡改? 加密特點: 對稱加密:快速(加密資料,防止
建立一個類的例項有哪些方法
原 https://blog.csdn.net/lizhen54/article/details/74544801 1、關鍵字 new。工廠模式是對這種方式的包裝; 2、類實現克隆介面,克隆一個例項。原型模式是一個應用例項; 3、用該類的載入器,newinstance。java的
一個Web佈局例項
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script
appium常用封裝(一)
一、Dos下執行adb devices獲取udid封裝 1 #coding=utf-8 2 import os 3 class DosCmd: 4 def excute_cmd_result(self,command): 5 result_list = []
ansible常用模組例項
blockinfile 檔案中某行後插入多行 [[email protected]] /opt/software$ ansible test[1:2] -m blockinfile -a 'dest=/usr/local/kafka/config/zookeeper.pro
Ngins 配置常用八大例項
例項一、Nginx 虛擬主機配置 拷貝一份配置檔案,配置虛擬主機;並且建立一個 nginx 的普通使用者 [[email protected] ~]# cd /usr/local/nginx/conf [[email protected] conf]# cp
關於rem適配的3種常用封裝
在之前寫了一篇關於rem適配的文章,但是沒有給出具體的封裝,那麼今天這裡給出常用的三種方法,分享出來供大家參考學習,下面話不多說了,來隨著小編一起學習學習吧 一、rem1.js 第一種方法考慮了m端螢幕旋轉的問題.對相容性做出了一定的處理,具體看程式碼.
一個簡單的例項Loan類的實現和測試
import java.util.Scanner; public class TestLoanClass { public static void main(String[] args) { // TODO 自動生
一個完整jsonp例項
一個完整jsonp例項 伺服器環境 SPA 理論知識點 注意 例項解讀 客戶端 頁面所在的服務端 跨域請求的服務端 除錯 效果截圖 總結
把一個類封裝到另一個類中-Python
一個類的物件作為另一個類的引數 #物件的封裝 ***** #將一個類的物件,封裝到,另一個類中的方法中去 class Teacher: def __init__(self,tea_name,tea_age): self.teacher_name = tea_name