virtual void append(const log4cxx::spi::LoggingEventPtr& event, log4cxx::helpers::Pool& pool) { (void)pool; levels::Level level; if (event->getLevel() == log4cxx::Level::getFatal()) { level = levels::Fatal; } else if (event->getLevel() == log4cxx::Level::getError()) { level = levels::Error; } else if (event->getLevel() == log4cxx::Level::getWarn()) { level = levels::Warn; } else if (event->getLevel() == log4cxx::Level::getInfo()) { level = levels::Info; } else if (event->getLevel() == log4cxx::Level::getDebug()) { level = levels::Debug; } else { return; } #ifdef _MSC_VER LOG4CXX_ENCODE_CHAR(tmpstr, event->getMessage()); // has to handle LogString with wchar types. std::string msg = tmpstr // tmpstr gets instantiated inside the LOG4CXX_ENCODE_CHAR macro #else std::string msg = event->getMessage(); #endif const log4cxx::spi::LocationInfo& info = event->getLocationInformation(); appender_->log(level, msg.c_str(), info.getFileName(), info.getMethodName().c_str(), info.getLineNumber()); }