log4cplus将日志文件名按日期创建
来源:互联网 发布:谢谢爷爷 知乎 编辑:程序博客网 时间:2024/06/09 23:00
日志文件一般会带上日期,或者创建以日期命名名的文件夹,将日志文件创建于其中。log4cplus网上有不少教程,但是似乎没有人说这种方案。事实上源码里有这个类TimeBasedRollingFileAppender,就满足此需求。
#include <cstdio>#include <string>#include <pthread.h>#include <log4cplus/logger.h>#include <log4cplus/configurator.h>#include <log4cplus/loggingmacros.h>#include <log4cplus/fileappender.h>using namespace std;static log4cplus::Logger lgPltf = log4cplus::Logger::getInstance("loggerPlatform");void *threadFun(void *arg) { char name[64] = {0}; snprintf(name, sizeof(name)-1, "loggerMkt.%s", (const char *)arg); log4cplus::Logger loggerMkt1 = log4cplus::Logger::getInstance(name); //snprintf(name, sizeof(nameAppendFile)-1, "SQFront.%s.log", arg); //log4cplus::SharedAppenderPtr apd(new log4cplus::TimeBasedRollingFileAppender(nameAppendFile)); //std::auto_ptr<log4cplus::Layout> _layout(new log4cplus::TTCCLayout()); //apd->setLayout(_layout); //loggerCallback.addAppender(apd); LOG4CPLUS_TRACE_METHOD(loggerMkt1, LOG4CPLUS_TEXT(__FUNCTION__)); LOG4CPLUS_DEBUG(loggerMkt1, "This is a DEBUG message"); LOG4CPLUS_INFO(loggerMkt1, "This is a INFO message"); LOG4CPLUS_WARN(loggerMkt1, "This is a WARN message"); LOG4CPLUS_ERROR(loggerMkt1, "This is a ERROR message"); LOG4CPLUS_FATAL(loggerMkt1, "This is a FATAL message"); return NULL;}void printDebug() { LOG4CPLUS_TRACE_METHOD(lgPltf, LOG4CPLUS_TEXT(__FUNCTION__)); LOG4CPLUS_DEBUG(lgPltf, "This is a DEBUG message"); LOG4CPLUS_INFO(lgPltf, "This is a INFO message"); LOG4CPLUS_WARN(lgPltf, "This is a WARN message"); LOG4CPLUS_ERROR(lgPltf, "This is a ERROR message"); LOG4CPLUS_FATAL(lgPltf, "This is a FATAL message");}int main() { pthread_t pthread1, pthread2; log4cplus::PropertyConfigurator::doConfigure(LOG4CPLUS_TEXT("SQFront.log.properties")); log4cplus::Logger loggerMktBase = log4cplus::Logger::getInstance("loggerMkt"); pthread_create(&pthread1, NULL, threadFun, (void *)"tdf"); pthread_create(&pthread2, NULL, threadFun, (void *)"gta"); printDebug(); pthread_join(pthread1, NULL); pthread_join(pthread2, NULL); return 0;}
#SQFront.log.properties---------------------------------------#这里命名logger对象。我给logger对象的命名是loggerPlatform(表示输出程序基础运行平台的日志)和loggerMkt(表示输出行情业务相关的日志)#每个logger对象可以使用多个appender对象(这里有apdPlatform,apdMkt)。类似于每次打日志的时候,会输出到多个文件。(ALL是我调试时用的)log4cplus.logger.loggerPlatform=ALL, apdPlatform#, apdStdoutlog4cplus.logger.loggerMkt=ALL, apdMkt#对appender对象apdStdout(这里我是调试时用的)进行设置。#log4cplus.appender.apdStdout=log4cplus::ConsoleAppender#log4cplus.appender.apdStdout.layout=log4cplus::PatternLayout#log4cplus.appender.apdStdout.layout.ConversionPattern=%D{%Y-%m-%d %H:%M:%S.%q} %-5p - %m [%l]%n#对appender对象apdPlatform进行设置。TimeBasedRollingFileAppender可以按日期转储日志文件log4cplus.appender.apdPlatform=log4cplus::TimeBasedRollingFileAppenderlog4cplus.appender.apdPlatform.FilenamePattern=log/%d{yyyy-MM-dd}/SQFront.loglog4cplus.appender.apdPlatform.Append=truelog4cplus.appender.apdPlatform.MaxHistory=999log4cplus.appender.apdPlatform.ImmediateFlush=truelog4cplus.appender.apdPlatform.RollOnClose=falselog4cplus.appender.apdPlatform.CreateDirs=truelog4cplus.appender.apdPlatform.layout=log4cplus::PatternLayoutlog4cplus.appender.apdPlatform.layout.ConversionPattern=[%T] %D{%Y-%m-%d %H:%M:%S.%q} %-5p - %m [%c]%n#可不配置。日志文件会按此等级范围显示#log4cplus.appender.apdRoot.filters.1=log4cplus::spi::LogLevelRangeFilter#log4cplus.appender.apdRoot.filters.1.LogLevelMin=ERROR#log4cplus.appender.apdRoot.filters.1.LogLevelMax=FATALlog4cplus.appender.apdMkt=log4cplus::TimeBasedRollingFileAppenderlog4cplus.appender.apdMkt.FilenamePattern=log/%d{yyyy-MM-dd}/SQFront.mkt.loglog4cplus.appender.apdMkt.Append=truelog4cplus.appender.apdMkt.MaxHistory=999log4cplus.appender.apdMkt.ImmediateFlush=truelog4cplus.appender.apdMkt.RollOnClose=falselog4cplus.appender.apdMkt.CreateDirs=truelog4cplus.appender.apdMkt.layout=log4cplus::PatternLayoutlog4cplus.appender.apdMkt.layout.ConversionPattern=[%T] %D{%Y-%m-%d %H:%M:%S.%q} %-5p - %m [%c]%n
0 0
- log4cplus将日志文件名按日期创建
- winform log4net按日期 创建日志
- apache 按日期分卷日志
- apache 日志按日期分割
- gc日志按日期增加
- nginx按日期存储日志
- 基于log4net的支持动态文件名、按日期和大小自动分割文件的日志组件
- log4net支持按日期产生日志文件
- 使用cronolog按日期分割日志
- nginx日志按日期自动切割脚本
- log4j2.x日志按日期分隔
- apache日志按日期进行分割
- 使用cronolog按日期分割日志
- log4j+slf4j日志按日期生成
- tomcat日志catalina.out按日期分割
- log4j2.x日志按日期分隔
- Ecology8配置文件:Resin日志按日期拆分
- Apache按日期切割访问日志
- 双控开关接线
- Android的Fragment中onActivityResult不被调用解决方案
- CSDN第一篇 blog ————cmd命令常用记录
- iconv()函数的用法
- Loadrunner实现网络听评课系统登录脚本实例
- log4cplus将日志文件名按日期创建
- 造成java.lang.NoClassDefFoundError错误的原因及解决办法
- JSON.NET VS BinaryFormatter 性能
- 安卓搭建nexus私服-2.window下安装nexus-3.0.0-03
- 汉诺塔系列2
- sphinx 分布式索引报错:no enabled local indexes to search
- Android studio中使用Http方法
- 十大Intellij IDEA快捷键 for System.out、main快捷键
- Android数据存储实现的5大方式