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-creator,pro中的设置如下:
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