1. 程式人生 > >在Linux上的使用開源C++日誌庫 ---log4cplus

在Linux上的使用開源C++日誌庫 ---log4cplus

1.簡 介

    log4cplus是C++編寫的開源的日誌系統,前身是java編寫的log4j系統.受Apache Software License保護。作者是Tad E. Smith。

    log4cplus具有執行緒安全、靈活、以及多粒度控制的特點,通過將資訊劃分優先順序使其可以面向程式除錯、執行、測試、和維護等全生命週期;你可以選擇將資訊輸出到螢幕、檔案、NT event log、甚至是遠端伺服器;通過指定策略對日誌進行定期備份等等。
 
2.下 載

最新的log4cplus可以從以下網址下載。
log4cplus:http://sourceforge.net/projects/log4cplus/

3.安 裝



#tar xvzf log4cplus-1.0.4-rc10.tar.gz
#cd log4cplus-1.0.4-rc10
#./configure --prefix=/usr/local
#make
#make install
安裝成功會在/usr/local/lib下看到 liblog4cplus.a,在/usr/local/include下有個liblog4cplus資料夾




4.配 置

確保你的Makefile中包含 /usr/local/lib/liblog4cplus.a(靜態庫)或-llog4cplus(動態庫)即可。

標頭檔案在/usr /local/include/log4cplus目錄下。

對於動態庫,要想正常使用,還得將庫安裝路徑加入到 LD_LIBRARY_PATH 中,以管理員身份登入,在/etc/ld.so.conf中加入安裝路徑,這裡是/usr/local/lib,然後執行 ldconfig使設定生效即可。

 
5.執行測試程式

直接執行原始碼包中tests目錄下的測試程式


6.log4cplus內容介紹
1.log4cplus基本元素     Layouts       :控制輸出訊息的格式。
    Appenders  :輸出位置。
    Logger        :日誌物件。
    Priorities      :優先權,包括TRACE, DEBUG, INFO, WARNING, ERROR, FATAL。
2.log4cplus基本結構     
3. 使用步驟:     a.) 生成Appender物件。     b.) 生成Layout物件,並繫結到Appender。(可選)     c.) 生成Logger物件。     d.) 設定Logger優先順序。(可選)     e.) 將需要關聯Logger的Appender新增到Logger上。     f.) 使用Logger輸出資訊,所有大於設定的優先順序的資訊,並在所有掛接在該Logger物件上的Appender上以相應的Layout設定的格式顯示出來。  
4. Logger物件 Logger物件具有層次結構,按名稱區分,如下程式碼:    Logger test = Logger::getInstance("test"); 
Logger subtest = Logger::getInstance("test.subtest");     物件subtest是test的子物件。 5. 優先順序     log4cplus優先順序有低到高:     NOT_SET_LOG_LEVEL :接受預設的LogLevel,如果有父logger則繼承它的LogLevel
    ALL_LOG_LEVEL :開放所有log資訊輸出
    TRACE_LOG_LEVEL :開放trace資訊輸出(即ALL_LOG_LEVEL)
    DEBUG_LOG_LEVEL :開放debug資訊輸出
    INFO_LOG_LEVEL  :開放info資訊輸出
    WARN_LOG_LEVEL  :開放warning資訊輸出
    ERROR_LOG_LEVEL :開放error資訊輸出
    FATAL_LOG_LEVEL :開放fatal資訊輸出
    OFF_LOG_LEVEL :關閉所有log資訊輸出     各個logger可以通過setLogLevel設定自己的優先順序,當某個logger的LogLevel設定成NOT_SET_LOG_LEVEL時,該logger會繼承父logger的優先順序,另外,如果定義了重名的多個logger, 對其中任何一個的修改都會同時改變其它logger。 6.Layout格式輸出 1.) SimpleLayout
    是一種簡單格式的佈局器,在輸出的原始資訊之前加上LogLevel和一個"-"。 2.) TTCCLayout
    其格式由時間,執行緒ID,Logger和NDC 組成。 3.) PatternLayout     是一種有詞法分析功能的模式佈局器,類似正則表示式。以“%”作為開頭的特殊預定義識別符號,將產生特殊的格式資訊。 (1)"%%",轉義為% 。 (2)"%c",輸出logger名稱,如test.subtest 。也可以控制logger名稱的顯示層次,比如"%c{1}"時輸出"test",其中數字表示層次。
(3)"%D",顯示本地時間,比如:"2004-10-16 18:55:45",%d顯示標準時間。     可以通過%d{...}定義更詳細的顯示格式,比如%d{%H:%M:%s}表示要顯示小時:分鐘:秒。大括號中可顯示的
     預定義識別符號如下:
     
   %a -- 表示禮拜幾,英文縮寫形式,比如"Fri"
   %A -- 表示禮拜幾,比如"Friday"
   %b -- 表示幾月份,英文縮寫形式,比如"Oct"
   %B -- 表示幾月份,"October"
   %c -- 標準的日期+時間格式,如 "Sat Oct 16 18:56:19 2004"
   %d -- 表示今天是這個月的幾號(1-31)"16"
   %H -- 表示當前時刻是幾時(0-23),如 "18"
   %I -- 表示當前時刻是幾時(1-12),如 "6"
   %j -- 表示今天是哪一天(1-366),如 "290"
   %m -- 表示本月是哪一月(1-12),如 "10"
   %M -- 表示當前時刻是哪一分鐘(0-59),如 "59"
   %p -- 表示現在是上午還是下午, AM or PM
   %q -- 表示當前時刻中毫秒部分(0-999),如 "237"
   %Q -- 表示當前時刻中帶小數的毫秒部分(0-999.999),如 "430.732"
   %S -- 表示當前時刻的多少秒(0-59),如 "32"
   %U -- 表示本週是今年的第幾個禮拜,以週日為第一天開始計算(0-53),如 "41"
   %w -- 表示禮拜幾,(0-6, 禮拜天為0),如 "6"
   %W -- 表示本週是今年的第幾個禮拜,以週一為第一天開始計算(0-53),如 "41"
   %x -- 標準的日期格式,如 "10/16/04"
   %   X -- 標準的時間格式,如 "19:02:34"
   %y -- 兩位數的年份(0-99),如 "04"
   %Y -- 四位數的年份,如 "2004"
   %Z -- 時區名,比如 "GMT" (4)"%F",輸出當前記錄器所在的檔名稱,比如"main.cpp"
(5)"%L",輸出當前記錄器所在的檔案行號,比如"51"
(6)"%l",輸出當前記錄器所在的檔名稱和行號,比如"main.cpp:51"
(7)"%m",輸出原始資訊。
(8)"%n", 換行符。 (9)"%p",輸出LogLevel,比如"DEBUG"
(10)"%t",輸出記錄器所在的執行緒ID,比如 "1075298944"
(11)"%x",巢狀診斷上下文NDC (nested diagnostic context) 輸出,從堆疊中彈出上下文資訊,NDC可以用對不同源的log資訊(同時地)交叉輸出進行區分。
(12)格式對齊,比如"%-10m"時表示左對齊,寬度是10,當然其它的控制字元也可以相同的方式來使用,比如"%-12d","%-5p"等等。 7.) Appender輸出位置
(1)控制檯輸出         ConsoleAppender (2)檔案輸出         FileAppender / RollingFileAppender / DailyRollingFileAppender . FileAppender :     實現了基本的檔案操作功能,建構函式如下:     FileAppender(filename,mode,immediateFlush); <filename > 檔名
<mode> 檔案型別,可選擇的檔案型別包括app,ate,binary,in,out,trunc。預設是trunc,表示將先前檔案刪除。
<immediateFlush> 緩衝重新整理標誌. RollingFileAppender: RollingFileAppender(filename,maxFileSize,maxBackupIndex,immediateFlush)
filename       : 檔名
maxFileSize    : 檔案的最大尺寸
maxBackupIndex : 最大記錄檔案數
immediateFlush : 緩衝重新整理標誌 可以根據你預先設定的大小來決定是否轉儲,當超過該大小,後續log資訊會另存到新檔案中,除了定義每個記錄檔案的大小之外,你還要確定在 RollingFileAppender類物件構造時最多需要多少個這樣的記錄檔案(maxBackupIndex+1),當儲存的檔案數目超過 maxBackupIndex+1時,會刪除最早生成的檔案,保證整個檔案數目等於maxBackupIndex+1 。 DailyRollingFileAppender: DailyRollingFileAppender(filename, schedule,immediateFlush,  maxBackupIndex)

filename       : 檔名
schedule       : 儲存頻度
immediateFlush : 緩衝重新整理標誌
maxBackupIndex : 最大記錄檔案數

DailyRollingFileAppender類可以根據你預先設定的頻度來決定是否轉儲,當超過該頻度,後續log資訊會另存到新檔案中,這裡的頻度包

轉載來源:http://myswirl.blog.163.com/blog/static /51318642201071644948257/

新增:

log4cplus是一款優秀的基於C/C++的開源日誌庫。log4cplus具有執行緒安全,不用但心在多執行緒狀態下寫日誌問題;使用靈活,可通過配置檔案設定日誌級別下輸出位置,還可以在程式執行時動態設定日誌輸出級別,隨心所欲掌控日誌的輸出;以及多粒度控制的特點。通過將資訊劃分優先順序使其可以面向程式除錯、執行、測試、和維護等全生命週期; 可以選擇將資訊輸出到螢幕、檔案、NT event log、甚至是遠端伺服器;通過指定策略對日誌進行定期備份。可以滿足大部分開發者對日誌系統需求,功能全面。
下載地址:http://sourceforge.net/projects/log4cplus/files/log4cplus-stable/
tar -xjf log4cplus-1.0.4.tar.bz2(解壓縮),切換到解壓縮路徑下
安裝:./configure;make;make install
這裡已經安裝成功,預設的路徑lib庫路徑是/usr/local/lib/,標頭檔案的位置:/usr/local/include/log4cplus
將/usr/local/lib下的和log4cplus相關的庫都拷貝到/usr/lib,將標頭檔案加到/etc/profile下的CPLUS_INCLUDE_PATH

這裡要強調是使用log4cplus時,要 加上-llog4cplus -lrt -lpthread -lrt(或者 -llog4cplus -lpthread ),才能順利的編譯通過和使用;

原文來源:http://blog.csdn.net/AstrayLinux/article/details/7258835

相關推薦

Linux的使用開源C++日誌 ---log4cplus

1.簡 介     log4cplus是C++編寫的開源的日誌系統,前身是java編寫的log4j系統.受Apache Software License保護。作者是Tad E. Smith。     log4cplus具有執行緒安全、靈活、以及多粒度控制的特點,通過將資訊劃分優先順序使其可以面向程式除錯、

C++日誌log4cplus:SocketAppender記錄日誌到log Server

1.問題 C++程式在後臺執行時,可通過log4cplus記錄日誌。當C++程式執行在遠端伺服器上時,我們就需要遠端登陸到該伺服器才能檢視日誌。進一步,如果該C++程式一個並行程式或者分散式程式,為了檢視程式的執行狀態,我們就需要登陸到N臺伺服器上,tail -f xx.

C++:日誌log4cplus 2.0的使用說明

以前在做java開發時一直都在用log4j,它配置靈活,功能強大。如果C++中也存在類似配置的日誌庫,則可以省去不少學習的時間。在C++中的確有這樣的一些庫,本文就拿其中用的最多的log4cplus來講講如何使用它。 可以從以上兩個地址中下載最新的檔案,本文使用的最新版

Linux給數據指定用戶權限

ges nbsp ide 個數 用戶權限 測試 指定 限定 linux   要給數據庫指定用戶只能操作這一個數據庫,兩句話就行了。     grant all on 對應的數據庫.* to [email protected]/* */ identified by

Linux使用C編程獲取IPv4地址及子網掩碼

ror mask include config oba retrieve 不難 ipv4 collision 在Linux上(如Ubuntu或CentOS), 獲取某個Network Interface比如eth0的IP地址等信息,我們可以使用ifconfig或者ip ad

Linux 標準c複製檔案

#include "stdafx.h" #include<stdio.h> #include<stdlib.h> int _tmain(int argc, _TCHAR* argv[]) { char *path = "C:\\Users\\Adminis

linux 檢視tomcat日誌檔案

來源1:https://www.linchaokun.cn/263.html 來源2:http://www.cnblogs.com/sxdcgaq8080/p/9044654.html 1、先切換到logs目錄比如:cd /opt/apache-tomcat-7.0.65/

在x64位Linux生成動態連結必須使用編譯選項-fPIC的問題

在 Linux 下製作動態連結庫,“標準” 的做法是編譯成位置無關程式碼(Position Independent Code,PIC),然後連結成一個動態連結庫。經常遇到的一個問題是 -fPIC 是不是必需,因為好像不加經常也能正常執行,只是建立 .so 的時候

linux下使用C++ Json

安裝Json庫 3、解壓scons-2.1.0.tar.gz tar -zvxf scons-2.1.0.tar.gz 我的解壓到了/opt/JSON/scons-2.1.0目錄下了 4、進入到解壓目錄scons-2.1.0下面,執行命

linux使用c++實現http/2協議進行通訊

採用nghttp2是一個http/2協議的翻譯器。 採用openssl進行TLS通訊,實現加密和安全。 採用socket與目標server建立tcp連線,實現底層資料通訊。         nghttp2 是一個很優秀的 HTTP/2 的 C 類實現。它的前身是 SPDY

linux搭建svn版本

svn配置 mount /dev/cdrom /media/cdrom 掛載光碟機 1.安裝svn伺服器端 yum install subversion 從映象下載安裝svn伺服器端 cd /usr/local/ //進入目錄,準備建立svn目錄 mkdir svn //建

linux java 呼叫c++ 動態

1,準備工作,下載jna.jar, 這是動態庫依賴的jar包 wget http://repo1.maven.org/maven2/net/java/dev/jna/jna/4.5.2/jna-4.5.2.jar 如果沒有javac,需要自己安裝,請執行 sudo yu

c++日誌

https://github.com/zuhd-org/easyloggingpp https://github.com/gab

一個輕量快速的C++日誌

limlog 作一篇文章記錄實現,驅動優化迭代。 Github 很久之前就想寫一個日誌庫了,受限制於自己水平這個想法一直沒有完成。在上次寫一個 TCPServer 的時候,寫了一個錯誤的日誌庫,在多執行緒的情況對速度影響非常大,並且最重要的正確性也沒有保證。 近期又有了點時間,決定重新實現,對其 特點期望:

站在巨人的肩膀C++開源大全

windows應用 pcr ram perl t對象 rest 容器 企業應用 聲音 程序員要站在巨人的肩膀上,C++擁有豐富的開源庫,這裏包括:標準庫、Web應用框架、人工智能、數據庫、圖片處理、機器學習、日誌、代碼分析等。 標準庫 C++ Standard

[置頂] C++開源日誌--Glog的使用

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

C++開源日誌選擇

每個系統都需要日誌記錄,通過日誌方便排錯除錯,管理執行時的異常。 而C++開源的日誌庫,待選的有 glog、log4cplus、log4cpp、log4cxx 目前準備使用glog,使用方便,效能也不錯,待進一步試驗,如果有不能滿足的功能就轉用 log4cplus,功能很

基於mini2440嵌入式linux整合一套Domoticz智慧家居系統(七)交叉編譯paho.mqtt.embedded-c和嵌入式linux樣例程式

本篇將把paho.mqtt.embedded-c官方的原始碼交叉編譯成資料包封裝庫和應用程式兩部分,並把樣例應用程式在mini2440上執行。 一、首先編譯MQTT協議包封裝庫: 解壓paho.mqtt.embedded-c-master.zip之後,進入目

C++開源日誌Glog的使用(VS2010)

如需轉載請標明出處:http://blog.csdn.net/itas109  QQ技術交流群:129518033 平臺:windows 開發工具:VS2010 1、下載Glog 下載完成之後,用VS2010進行編譯,預設是vs2008讓其自動轉換,如圖所示。 編譯

[翻譯]-LinuxC++類的動態載入

摘要:本文是翻譯文章,主要介紹了執行時過載C++類庫的技術,包括了Linux上的庫動態載入介面、C++類庫的動態載入技術點及實現、自動載入技術等。最後給出了兩個應用案例及相關的原始碼。 關鍵字:動態載入,C++類,Linux 原文連結:http://porky.lin