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

参考网址:
http://blog.csdn.net/jisuanji2121/article/details/11810849
http://www.cnblogs.com/keepsimple/archive/2013/05/10/3071309.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值