1、编译log4cplus时选择多字节
2、配置文件使用ANSI
3、配置Encoding=utf-8
配置文件如下
代码:
log4cplus::initialize();
log4cplus::PropertyConfigurator::doConfigure(LOG4CPLUS_TEXT("log4Cfg.ini"));
log4cplus::Logger logger = log4cplus::Logger::getInstance(LOG4CPLUS_TEXT("TestSoftCommunicate"));
auto tmp1 = logger.getAllAppenders();
auto tmp2 = logger.getCurrentLoggers();
//for (int i = 0; i < 5000; i++)
{
LOG4CPLUS_TRACE(logger, LOG4CPLUS_TEXT("TRACE-LOG-TEST"));
LOG4CPLUS_DEBUG(logger, LOG4CPLUS_TEXT("DEBUG-LOG-TEST"));
LOG4CPLUS_INFO(logger, LOG4CPLUS_TEXT("INFO-LOG-TEST"));
LOG4CPLUS_WARN(logger, ("warn_中文测试"));
LOG4CPLUS_ERROR(logger, LOG4CPLUS_STRING_TO_TSTRING("Error_中文测试"));
LOG4CPLUS_FATAL(logger, LOG4CPLUS_TEXT("FATAL-LOG-TEST"));
}
log4cplus::Logger::shutdown();
若项目使用UNICODE,需要以下几步
1、使用unicode编译log4cplus.dll
2、配置文件使用ANSI
3、配置Encoding=utf-8
4、需要在使用log4cplus之前调用一次std::locale::global(std::locale(""));
5、输出日志时使用
LOG4CPLUS_WARN(logger, LOG4CPLUS_TEXT("warn_中文测试"));
或者
LOG4CPLUS_ERROR(logger, LOG4CPLUS_STRING_TO_TSTRING("Error_中文测试"));