最近为了使用c++11的一些特性,将工程升级到vs2015,发现原先的log4cplus输出中文有问题,调试发现log4cplus经过2015编译后,其initialize是在DLL_PROCESS_ATTACH时调用的,原先针对vs2010之前的中文问
题的修改方案("std::locale:global(std::locale("chs"))")已经没有效果了,所以需要通过直接修改
FileAppenderBase::imbue(std::locale const& loc)
{
return out.imbue (loc);
}
此处的输出流locale设置,所以在使用的地方
// 定义一个滚动文件的Appender
SharedFileAppenderPtr pRollingFileAppender(new RollingFileAppender(strFileName.GetString(), 1024 * 1024 * 10, 5, true, true));
std::locale lc("chs");
//std::locale::global(lc);
pRollingFileAppender->imbue(lc);
pRollingFileA