1. 程式人生 > >log4cplus日誌工具樣例

log4cplus日誌工具樣例

logcplus是一款很好用的日誌記錄系統,操作簡便,能記錄程式執行的時間,執行位置,方便定位問題。這裡記錄下linux下的安裝及使用。

安裝:
1. 下載安裝包log4cplusxxx,解壓,進入解壓出的資料夾
2. ./configure CXXFLAGS=”-std=c++0x” –prefix=/usr/local/
3. make
4. sudo make install
5. sudo vim /etc/ld.so.conf,在末尾行新增/usr/local/lib
6. sudo ldconfig生效

使用:
這裡使用的是qt-creatorpro中的設定如下:

CONFIG += c++11

TARGET
= log4cplus_example CONFIG += console CONFIG -= app_bundle TEMPLATE = app LIBS += -L/usr/local/lib/log4cplus -llog4cplus INCLUDEPATH += -L/usr/local/include/log4cplus

main.cpp:

#include <cstdlib>
#include <log4cplus/logger.h>
#include <log4cplus/configurator.h>
#include <log4cplus/helpers/loglog.h>
#include <log4cplus/helpers/stringhelper.h> #include <log4cplus/loggingmacros.h> #include <unistd.h> using namespace std; using namespace log4cplus; using namespace log4cplus::helpers; void Fun(Logger& logger) { std::string text = "fun logger"; LOG4CPLUS_TRACE(logger, text); LOG4CPLUS_DEBUG(logger, text); LOG4CPLUS_INFO(logger, text); LOG4CPLUS_WARN(logger, text); LOG4CPLUS_ERROR(logger, text); } int
main() { int i = 2; log4cplus::ConfigureAndWatchThread watcher("log.properties", 10*1000); Logger logger = log4cplus::Logger::getInstance("root"); Logger loggerTest = log4cplus::Logger::getInstance("test"); Logger loggerFun = Logger::getInstance(("fun")); while(i--) { //PropertyConfigurator::doConfigure(LOG4CPLUS_TEXT("log.properties")); // trace LOG4CPLUS_TRACE(logger, "root logger"); // debug LOG4CPLUS_DEBUG(logger, "root logger"); // info LOG4CPLUS_INFO(logger, "root logger"); // warn LOG4CPLUS_WARN(logger, "root logger"); // error LOG4CPLUS_ERROR(logger, "root logger"); //fatal LOG4CPLUS_FATAL(logger, "root logger"); // LOG4CPLUS_TRACE(loggerTest,"test logger"); LOG4CPLUS_ERROR(loggerTest,"test logger"); Fun(loggerFun); sleep(10); } return 0; }

log4cplus::ConfigureAndWatchThread watcher(“log.properties”, 10*1000):載入檔案並監測檔案是否變化,可修改日誌級別檢視執行結果。

需在生成的可執行檔案路徑中,建立log資料夾,放入配置的檔案log.properties,其中log.properties配置如下:

log4cplus.rootLogger=TRACE, R
log4cplus.appender.R=log4cplus::DailyRollingFileAppender
log4cplus.appender.R.File=./log/root.log
log4cplus.appender.R.DatePattern='.'yyyy-MM-dd
log4cplus.appender.R.Schedule=DAILY
log4cplus.appender.R.MaxBackupIndex=7
log4cplus.appender.R.layout=log4cplus::PatternLayout
log4cplus.appender.R.layout.ConversionPattern=%D{[%Y/%m/%d-%H:%M:%S,%Q]} [%t] [%l] %-5p%x - %m%n
log4cplus.appender.R.filters.1=log4cplus::spi::LogLevelRangeFilter
log4cplus.appender.R.filters.1.LogLevelMin=TRACE
log4cplus.appender.R.filters.1.LogLevelMax=ERROR
log4cplus.appender.R.filters.1.AcceptOnMatch=true
log4cplus.appender.R.filters.2=log4cplus::spi::DenyAllFilter


log4cplus.logger.test=ERROR, RR    
log4cplus.appender.RR=log4cplus::DailyRollingFileAppender  
log4cplus.appender.RR.File=./log/test.log  
log4cplus.appender.RR.MaxBackupIndex=24  
log4cplus.appender.RR.Schedule=HOURLY  
log4cplus.appender.RR.Append=true  
log4cplus.appender.RR.layout=log4cplus::PatternLayout  
log4cplus.appender.RR.layout.ConversionPattern=%p %D{%Y-%m-%d %H:%M:%S.%q}:%t %F:%L "%m"%n

log4cplus.logger.fun=TRACE, RRR    
log4cplus.appender.RRR=log4cplus::DailyRollingFileAppender  
log4cplus.appender.RRR.File=./log/fun.log  
log4cplus.appender.RRR.MaxBackupIndex=7 
log4cplus.appender.RRR.Schedule=DAILY  
log4cplus.appender.RRR.Append=true  
log4cplus.appender.RRR.layout=log4cplus::PatternLayout  
log4cplus.appender.RRR.layout.ConversionPattern=%D{[%Y/%m/%d-%H:%M:%S,%Q]} [%t] [%l] %-5p%x - %m%n
log4cplus.appender.RRR.filters.1=log4cplus::spi::LogLevelRangeFilter
log4cplus.appender.RRR.filters.1.LogLevelMin=DEBUG
log4cplus.appender.RRR.filters.1.LogLevelMax=ERROR
log4cplus.appender.RRR.filters.1.AcceptOnMatch=true
log4cplus.appender.RRR.filters.2=log4cplus::spi::DenyAllFilter

其中log4cplus.rootLogger指是根日誌記錄器,所有的日誌都會記錄到它所對應的日誌檔案下./log/root.log;
log4cplus.logger.fun其它日誌記錄器,可通過Logger::getInstance((“fun”))呼叫,由它所寫的日誌只會寫入它對應的檔案下./log/fun.log;
MaxBackupIndex–同一天或者小時日誌最多生成多少個;
Schedule–按天記錄或者按小時記錄等;
ConversionPattern–輸出格式;
LogLevelMin–輸出最小級別,LogLevelMax–輸出最大級別。

輸出結果(僅貼出根日誌root的日誌):

[2016/11/24-10:40:48,040.834] [140737353987904] [../log4cplus_example/main.cpp:34] TRACE - root logger
[2016/11/24-10:40:48,041.111] [140737353987904] [../log4cplus_example/main.cpp:36] DEBUG - root logger
[2016/11/24-10:40:48,041.140] [140737353987904] [../log4cplus_example/main.cpp:38] INFO  - root logger
[2016/11/24-10:40:48,041.149] [140737353987904] [../log4cplus_example/main.cpp:40] WARN  - root logger
[2016/11/24-10:40:48,041.170] [140737353987904] [../log4cplus_example/main.cpp:42] ERROR - root logger
[2016/11/24-10:40:48,041.182] [140737353987904] [../log4cplus_example/main.cpp:47] ERROR - test logger
[2016/11/24-10:40:48,041.315] [140737353987904] [../log4cplus_example/main.cpp:16] TRACE - fun logger
[2016/11/24-10:40:48,041.352] [140737353987904] [../log4cplus_example/main.cpp:17] DEBUG - fun logger
[2016/11/24-10:40:48,041.468] [140737353987904] [../log4cplus_example/main.cpp:18] INFO  - fun logger
[2016/11/24-10:40:48,041.592] [140737353987904] [../log4cplus_example/main.cpp:19] WARN  - fun logger
[2016/11/24-10:40:48,041.710] [140737353987904] [../log4cplus_example/main.cpp:20] ERROR - fun logger