log4cplus 在配置文件中设置文件路径,程序自动创建目录,且在日志文件前按日期创建相应的目录...

 

#include <string>
#include <cstdio>

#include <log4cplus/logger.h>
#include <log4cplus/configurator.h>
#include <log4cplus/appender.h>
#include <log4cplus/loggingmacros.h>
#include <log4cplus/loglevel.h>
#include <log4cplus/tstring.h>
#include <log4cplus/fileappender.h>

int main(int argc, char *argv[])
{
    log4cplus::initialize();
    try
    {
        // 加载配置文件: "log4cplus.properties"
        log4cplus::PropertyConfigurator::doConfigure(LOG4CPLUS_TEXT("log4cplus.properties"));

        // 获取配置文件中logger 名为"risk" 的logger 实例
        log4cplus::Logger LogRisk = log4cplus::Logger::getInstance("risk");
        log4cplus::SharedAppenderPtrList list = LogRisk.getAllAppenders();
        for (auto &listiter : list)
        {
            // 所有配置文件中risk logger 配置 为"log4cplus::MIFileAppender" 的appender,都进行初始化。
            // 这样可以达到自动创建一个以当天为日期的目录在name.log 的上一层目录
            log4cplus::Appender *appender = listiter.get();
            if ((nullptr != appender && typeid(*appender) == typeid(log4cplus::MIFileAppender))
            {
                log4cplus::MIFileAppender *miappender = dynamic_cast<log4cplus::MIFileAppender *>(appender);
                // 这里的第一个参数用于生成的文件名。第二个参数如果小于等于0,则会使用默认的文件名"nonam-4000" 后面是PID
                miappender->init("name.log", 1);
            }
            
            LOG4CPLUS_INFO(logRisk, "risk log log4cplus info message ...");
        }
    }
    catch (...)
    {
        std::cout << LOG4CPLUS_TEXT("Exception...") << std::endl;
    }

    log4cplus::logger::shutdown();
    return 0;
}

// 另外,log4cplus::Logger 下有一个静态函数 log4cplus::Logger::getCurrentLoggers();
// 可以获取当前Logger 下的所有Logger 实例的vector

 

错了,之前搞错了,这里删除。

 

 

log4cplus 以当前日期作为日志所在目录,可以配置 TimeBasedRollingFileAppender 作为appender 的实例。同时配置CreateDirs 的值为true 自动创建不存在的目录。

该实例还有一个配置必须存在FilenamePattern,它的值指定转存文件的时间周期,以及转存的文件名。

比如,可以指定按天转存:log/%d{yyyy-MM-dd}/SQFront.mkt.log

但是TimeBasedRollingFileAppender 它有一个问题就是,若log/%d{yyyy-MM-dd}/SQFront.mkt.log 这个文件已经存在,则该文件将会被覆盖。

 

不过,还有更好的方法就是自己实现一个appender.

我自己实现了一个RollingAppender 上传到csdn 资源里面

不知道这个链接对不对:http://download.csdn.net/detail/su_787910081/9836701

 

转载于:https://www.cnblogs.com/suyunhong/p/6233565.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值