ползуюсь уже почти пол-года log4cxx v0.9.7 и горя не знаю. у вдруг чего-то дернуло меня выводить русские символы. а не выводятся.
как строковые коннстанты, записанные с коде, как и приходящие извне (там — честный юникод utf-16)
Программа также скомпилированна в юникоде.
сначала попробовал просто вызвать _wsetlocale:
_tsetlocale (LC_ALL, _T("russian"));
не помогло. русский текст "проглатывается".
посмотрел в исходники лоджера, там вывод происходит через такого вида макросы:
#define LOG4CXX_DEBUG(logger, message) { \
if (logger->isDebugEnabled()) {\
::log4cxx::StringBuffer oss; \
oss << message; \
logger->forcedLog(::log4cxx::Level::DEBUG, oss.str(), __FILE__, __LINE__); }}
StringBuffer — наследник от basic_ostream<TCHAR>.
вставил в программу код из макроса, только добавил вызов imbue:
::log4cxx::StringBuffer oss;
oss.imbue(std::locale("rus_rus.866"));
oss << messageT;
log->forcedLog(::log4cxx::Level::DEBUG, oss.str(), __FILE__, __LINE__);
эффект — 0. есть идеи?