Log4c 实现配置文件动态参数。
string rootPath = StringUtil::getProjectPath();
string path = rootPath+"config/log4j/log4cxx.properties";
FileInputStreamPtr propFile = new FileInputStream(path);
helpers::Properties props;
props.load(propFile);
vector<LogString> keys =props.propertyNames();
for (vector<LogString>::iterator iter = keys.begin(); iter != keys.end(); ++iter){
LogString key = *iter; LogString val = props.get(key);
LogString::iterator iterF1,iterL1;
int index = val.find(_T("{root_path}"),0);
//wcout<<val<<" ----------- "<<index<<endl;
if(index>=0){
iterF1 = val.begin()+index; iterL1 = iterF1+12;
val.replace(iterF1,iterL1,StringUtil::s2ws(rootPath));
props.setProperty(key,val);
wcout<<__FUNCTION__<<val<<"----- "<<index<<" ---- "<<props.get(key)<< endl;
}
index=val.find(_T("{investorid}"),0);
if(index>=0){
iterF1 = val.begin()+index; iterL1 = iterF1+12;
val.replace(iterF1,iterL1,StringUtil::s2ws(name));
props.setProperty(key,val);
//wcout<<__FUNCTION__<<val<<"----- "<<index<<" ---- "<<props.get(key)<< endl;
}
}
PropertyConfigurator::configure(props);
this->logger= Logger::getLogger("SQtrading");
LOG4CXX_INFO(logger,__FUNCTION__<<"[" << name.c_str() << "] rootpath=" << getenv("ROOT_PATH")<<" logfile=" << getenv("LOG_FILE"));
配置文件如下:
#modify
#Wed Jan 23 15:56:21 CST 2019
log4j.logger.PtradeTrading=DEBUG,fileAppender
log4j.appender.fileAppender.layout.ConversionPattern=%d [%p] [%t] %m%n
log4j.appender.fileAppender.Append=true
log4j.appender.fileAppender.File={root_path}/{investorid}.log
log4j.appender.fileAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.fileAppender.datePattern='.'yyyy-MM-dd
log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout
#sqtrading
log4j.logger.SQtrading=DEBUG,fileAppender2
log4j.appender.fileAppender2.layout.ConversionPattern=%d [%p] [%t] %m%n
log4j.appender.fileAppender2.Append=true
log4j.appender.fileAppender2.File= {root_path}/log/dll/{investorid}.log
log4j.appender.fileAppender2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.fileAppender2.datePattern='.'yyyy-MM-dd
log4j.appender.fileAppender2.layout=org.apache.log4j.PatternLayout
相关推荐
C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++
c++狼人杀c++狼人杀c++狼人杀c++狼人杀c++狼人杀c++狼人杀c++狼人杀c++狼人杀c++狼人杀c++狼人杀c++狼人杀c++狼人杀c++狼人杀c++狼人杀c++狼人杀c++狼人杀c++狼人杀c++狼人杀c++狼人杀c++狼人杀c++狼人杀c++狼人杀...
c++c++c++c++c++c++c++c++c++c++c++c++c++c++c++c++c++c++c++c++c++c++c++c++c++c++c++c++c++c++c++
c++代码c++代码c++代码c++代码c++代码c++代码c++代码c++代码c++代码c++代码c++代码c++代码c++代码c++代码c++代码c++代码c++代码c++代码c++代码c++代码c++代码c++代码c++代码c++代码c++代码c++代码c++代码c++代码c++...
c++ ch1 c++ ch1 c++ ch1 c++ ch1c++ ch1 c++ ch1 c++ ch1 c++ ch1c++ ch1 c++ ch1 c++ ch1 c++ ch1c++ ch1 c++ ch1 c++ ch1 c++ ch1c++ ch1 c++ ch1 c++ ch1 c++ ch1c++ ch1 c++ ch1 c++ ch1 c++ ch1c++ ch1 c++ ch...
《计算机科学丛书:C++语言导学》作者是C++语言的设计者和最初实现者,写作本书的目的是让有经验的程序员快速了解C++现代语言。书中几乎介绍了C++语言的全部核心功能和重要的标准库组件,以很短的篇幅将C++语言的...
c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏c++小游戏...
C++飞机大战 C++课程设计C++飞机大战 C++课程设计C++飞机大战 C++课程设计C++飞机大战 C++课程设计C++飞机大战 C++课程设计C++飞机大战 C++课程设计C++飞机大战 C++课程设计C++飞机大战 C++课程设计C++飞机大战 C++...
21天学通C++(第五版) vs2008程序打包 深入浅出MFC 浙大教材C++达内 C++ 华为C++培训资料 visual c++_MFC 资源内容: visual c++_MFC 达内 C++ C++课件.ppt c++源码 .rar Core C++ Programming_new.ppt Core C++ ...
《Effective Modern C++:改善C++11和C++14的42个具体做法(影印版)(英文版)》中包括以下主题:剖析花括号初始化、noexcept规范、完美转发、智能指针make函数的优缺点;讲解std∷move,std∷forward,rvalue引用和...
华为c++编码规范和安全编码规范最新3.1版本 华为c++编码规范和安全编码规范最新3.1版本 华为c++编码规范和安全编码规范最新3.1版本 华为c++编码规范和安全编码规范最新3.1版本 华为c++编码规范和安全编码规范最新3.1...
c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘...
《计算机科学丛书:C++语言导学》作者是C++语言的设计者和最初实现者,写作本书的目的是让有经验的程序员快速了解C++现代语言。书中几乎介绍了C++语言的全部核心功能和重要的标准库组件,以很短的篇幅将C++语言的...
假定读者已经具备C++基本知识,本书通过展示C++语言风格和习惯用法,帮助读者提升C++的程序设计经验。这些方法是围绕C++支持的抽象机制实施的:抽象数据类型,继承结构中的组合类型,面向对象程序设计以及多重继承。...
内容涉及C++11,C++14,C++17,C++20 新特性,包括右值引用,移动语义,lambda表达式,范围for循环 等
C++test 文档库包含以下各项: • C++test 用户手册 ( 当前指南): C++test 用户手册(当前指南):解释如何使用在 Eclipse 上构 建的 C++test 功能(如果您拥有单机版的 C++test),或者如何使用添加到 Eclipse 的...
dev c++ dev c++ dev c++
Character Standard C Math Standard C Time & Date Standard C Memory Other standard C functions All C Functions C++ C++ I/O C++ Strings C++ String Streams ...
想要彻底理解C++11和C++14,不可止步于熟悉它们引入的语言特性(例如,auto型别推导、移动语义、lambda表达式以及并发支持)。挑战在于高效地运用这些特性——从而使你的软件具备正确性、高效率、可维护性和可移植性...
最好用的单元测试工具,除了这里你是找不到9.0版本的破解的。 ... 独立的版本破解: ... 把lic_client.jar复制到 ... 把plugins-c++Test For Visual Studio.7z中的文件覆盖到...这个是:plugins-c++Test For Visual Studio.7z