void FB::Log::initLogging() { if (logging_started) return; bool addedAppender = false; log4cplus::Logger logger = log4cplus::Logger::getInstance(L"FireBreath"); FB::Log::LogLevel ll = getFactoryInstance()->getLogLevel(); logger.setLogLevel(translate_logLevel(ll)); FB::Log::LogMethodList mlist; getFactoryInstance()->getLoggingMethods(mlist); for (FB::Log::LogMethodList::const_iterator it = mlist.begin(); it != mlist.end(); ++it) { switch( it->first ) { case FB::Log::LogMethod_Console: { #ifdef FB_WIN log4cplus::SharedAppenderPtr debugAppender(new log4cplus::Win32DebugAppender()); std::auto_ptr<log4cplus::Layout> layout2(new log4cplus::TTCCLayout()); debugAppender->setLayout(layout2); logger.addAppender(debugAppender); addedAppender = true; #else log4cplus::SharedAppenderPtr debugAppender(new log4cplus::ConsoleAppender()); std::auto_ptr<log4cplus::Layout> layout2(new log4cplus::TTCCLayout()); debugAppender->setLayout(layout2); logger.addAppender(debugAppender); addedAppender = true; #endif } break; case FB::Log::LogMethod_File: { log4cplus::SharedAppenderPtr fileAppender(new log4cplus::FileAppender(FB::utf8_to_wstring(it->second))); std::auto_ptr<log4cplus::Layout> layout(new log4cplus::TTCCLayout()); fileAppender->setLayout(layout); logger.addAppender(fileAppender); addedAppender = true; } } } // If there are no other appenders, add a NULL appender if (!addedAppender) { log4cplus::SharedAppenderPtr nullAppender(new log4cplus::NullAppender()); std::auto_ptr<log4cplus::Layout> layout3(new log4cplus::TTCCLayout()); nullAppender->setLayout(layout3); logger.addAppender(nullAppender); } logging_started = true; }
void ChiikaApi::Log::InitLogging(const char* loc) { log4cplus::Logger logger = log4cplus::Logger::getInstance(LOG4CPLUS_TEXT("Chiika")); RootOptions ro = Root::Get()->GetRootOptions(); logger.setLogLevel(translate_logLevel((ChiikaApi::Log::LogLevel)ro.log_level)); #if YUME_PLATFORM == YUME_PLATFORM_WIN32 log4cplus::SharedAppenderPtr debugAppender(new log4cplus::Win32ConsoleAppender()); debugAppender->setName(LOG4CPLUS_TEXT("First")); debugAppender->setLayout(std::unique_ptr<log4cplus::Layout>(new log4cplus::TTCCLayout())); log4cplus::Logger::getRoot().addAppender(log4cplus::SharedAppenderPtr(debugAppender.get())); #else log4cplus::SharedAppenderPtr debugAppender(new log4cplus::ConsoleAppender()); debugAppender->setName(LOG4CPLUS_TEXT("ConsoleAppender")); debugAppender->setLayout(std::unique_ptr<log4cplus::Layout>(new log4cplus::TTCCLayout())); log4cplus::Logger::getRoot().addAppender(log4cplus::SharedAppenderPtr(debugAppender.get())); #endif std::string strModulePath = std::string(loc); const size_t cSize = strlen(loc); std::wstring wstrModulePath(cSize, L'#'); mbstowcs(&wstrModulePath[0], loc, cSize); #if YUME_PLATFORM == YUME_PLATFORM_WIN32 log4cplus::SharedAppenderPtr fileAppender(new log4cplus::RollingFileAppender(wstrModulePath)); #else log4cplus::SharedAppenderPtr fileAppender(new log4cplus::RollingFileAppender(strModulePath)); #endif fileAppender->setName(LOG4CPLUS_TEXT("Second")); fileAppender->setLayout( std::unique_ptr<log4cplus::Layout>( new log4cplus::PatternLayout(LOG4CPLUS_TEXT("[%-5p][%D{%Y/%m/%d %H:%M:%S:%q}][%t] %m%n")))); log4cplus::Logger::getRoot().addAppender(log4cplus::SharedAppenderPtr(fileAppender.get())); }