log4cplus

logv4初始化一定要到主函數啓動後初始化!在main函数前全局变量初始化会报错log4cplus:ERROR Unrecognized log level: TRACE

linux编译出来的动态库可以到500k。可以用strip命令瘦身。在tests目录下有各样例子。

写了个小程序测试。参考filter_test:

历史版本下载:log4cplus - Browse /log4cplus-stable at SourceForge.net

配置文件:

#log4cplus.rootLogger=TRACE, STDOUT, ALL_MSGS, TRACE_MSGS, DEBUG_INFO_MSGS, FATAL_MSGS

#这里支持2种输出方式:ALL_MSGS和STDOUT
log4cplus.rootLogger=TRACE,ALL_MSGS,STDOUT

#STDOUT配置为console输出

log4cplus.appender.STDOUT=log4cplus::ConsoleAppender
log4cplus.appender.STDOUT.layout=log4cplus::PatternLayout

#输出格式:%d日期{格式}%l文件名和行号;%p打印等级,日志等级:(TRACE<DEBUG<INFO<WARN<ERROR<FATAL);%c日志logr;%m就是我们输入的字符串;%n换行;%F文件名;%L行号。
log4cplus.appender.STDOUT.layout.ConversionPattern=[%d{%y-%m-%d %H:%M:%S.%q}][%l][%-5p,%c{2}]%m%n

#ALL_MSGS写文件,Append表示追加,RollingFileAppender表示循环覆盖,就是文件到了500K,就会保存到all_msgs.log.1中。也就是有all_msgs.log和all_msgs.log.1两个文件。。。还有FileAppender ,DailyRollingFileAppender都会导致log文件增大。

log4cplus.appender.FA.MaxBackupIndex=10 最大备份最大个数,应该是默认2

log4cplus.appender.ALL_MSGS=log4cplus::RollingFileAppender
log4cplus.appender.ALL_MSGS.File=all_msgs.log
log4cplus.appender.ALL_MSGS.layout=log4cplus::TTCCLayout
log4cplus.appender.ALL_MSGS.Append=true
log4cplus.appender.ALL_MSGS.ReopenDelay=10
log4cplus.appender.ALL_MSGS.MaxFileSize=500KB

log4cplus.appender.ALL_MSGS.MaxBackupIndex=10
log4cplus.appender.ALL_MSGS.layout=log4cplus::PatternLayout
log4cplus.appender.ALL_MSGS.layout.ConversionPattern=[%d{%y-%m-%d %H:%M:%S.%q}]%c,%-5p[%l]%m%n

#log4cplus.appender.TRACE_MSGS=log4cplus::RollingFileAppender
#log4cplus.appender.TRACE_MSGS.File=trace_msgs.log
#log4cplus.appender.TRACE_MSGS.layout=log4cplus::TTCCLayout

#指定打印等级
#log4cplus.appender.TRACE_MSGS.filters.1=log4cplus::spi::LogLevelMatchFilter
#log4cplus.appender.TRACE_MSGS.filters.1.LogLevelToMatch=TRACE
#log4cplus.appender.TRACE_MSGS.filters.1.AcceptOnMatch=true
#log4cplus.appender.TRACE_MSGS.filters.2=log4cplus::spi::DenyAllFilter

#log4cplus.appender.DEBUG_INFO_MSGS=log4cplus::RollingFileAppender
#log4cplus.appender.DEBUG_INFO_MSGS.File=debug_info_msgs.log
#log4cplus.appender.DEBUG_INFO_MSGS.layout=log4cplus::TTCCLayout

#指定打印等级的范围。
#log4cplus.appender.DEBUG_INFO_MSGS.filters.1=log4cplus::spi::LogLevelRangeFilter
#log4cplus.appender.DEBUG_INFO_MSGS.filters.1.LogLevelMin=DEBUG
#log4cplus.appender.DEBUG_INFO_MSGS.filters.1.LogLevelMax=INFO
#log4cplus.appender.DEBUG_INFO_MSGS.filters.1.AcceptOnMatch=true
#log4cplus.appender.DEBUG_INFO_MSGS.filters.2=log4cplus::spi::DenyAllFilter

#log4cplus.appender.FATAL_MSGS=log4cplus::RollingFileAppender
#log4cplus.appender.FATAL_MSGS.File=fatal_msgs.log
#log4cplus.appender.FATAL_MSGS.layout=log4cplus::TTCCLayout
#log4cplus.appender.FATAL_MSGS.filters.1=log4cplus::spi::StringMatchFilter
#log4cplus.appender.FATAL_MSGS.filters.1.StringToMatch=FATAL
#log4cplus.appender.FATAL_MSGS.filters.1.AcceptOnMatch=true
#log4cplus.appender.FATAL_MSGS.filters.2=log4cplus::spi::DenyAllFilter

程序:

#include <log4cplus/logger.h>
#include <log4cplus/configurator.h>
#include <log4cplus/spi/loggingevent.h>
#include <log4cplus/helpers/loglog.h>
#include <log4cplus/helpers/stringhelper.h>
#include <log4cplus/helpers/fileinfo.h>
#include <log4cplus/loggingmacros.h>
#include <log4cplus/consoleappender.h>
#include <log4cplus/initializer.h>
#include <unistd.h>

using namespace std;
using namespace log4cplus;
using namespace log4cplus::spi;
using namespace log4cplus::helpers;


void
printDebug(Logger logger)
{
    //Logger logger = Logger::getInstance(LOG4CPLUS_TEXT("log"));
    LOG4CPLUS_TRACE_METHOD(logger, LOG4CPLUS_TEXT("::printDebug()"));
    LOG4CPLUS_DEBUG(logger, "This is a DEBUG message");
    LOG4CPLUS_INFO(logger, "This is a INFO message");
    LOG4CPLUS_WARN(logger, "This is a WARN message");
    LOG4CPLUS_ERROR(logger, "This is a ERROR message");
    LOG4CPLUS_FATAL(logger, "This is a FATAL message");

    LOG4CPLUS_INFO(logger, "visible");
    LOG4CPLUS_INFO(logger, "invisible");
}

int
main(int argc, char * argv[])
{
    tcout << "Entering main()..." << endl;
    log4cplus::Initializer initializer;
    LogLog::getLogLog()->setInternalDebugging(false);//关闭库内部打印
    Logger root = Logger::getRoot();
    Logger mylogg = Logger::getInstance(LOG4CPLUS_TEXT("logr"));
    //PropertyConfigurator::doConfigure(LOG4CPLUS_TEXT("log4cplus.properties"));

    //这种方式可以在程序运行中修改配置文件。
    ConfigureAndWatchThread configureThread(
        LOG4CPLUS_TEXT("log4cplus.properties"), 5 * 1000);
    while(1)
    {
        printDebug(root);
        printDebug(mylogg);
        usleep(3000000);
    }
    return 0;
}
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值