void AsyncAppender::close() { { synchronized sync(bufferMutex); closed = true; bufferNotEmpty.signalAll(); bufferNotFull.signalAll(); } #if APR_HAS_THREADS try { dispatcher.join(); } catch(InterruptedException& e) { Thread::currentThreadInterrupt(); LogLog::error(LOG4CXX_STR("Got an InterruptedException while waiting for the dispatcher to finish,"), e); } #endif { synchronized sync(appenders->getMutex()); AppenderList appenderList = appenders->getAllAppenders(); for (AppenderList::iterator iter = appenderList.begin(); iter != appenderList.end(); iter++) { (*iter)->close(); } } }
void Logger::closeNestedAppenders() { AppenderList appenders = getAllAppenders(); for(AppenderList::iterator it=appenders.begin(); it!=appenders.end(); ++it) { (*it)->close(); } }
void combinedTest() { LoggerPtr root = Logger::getRootLogger(); bool rootIsConfigured = !root->getAllAppenders().empty(); CPPUNIT_ASSERT(rootIsConfigured); AppenderList list = root->getAllAppenders(); AppenderPtr appender = list.front(); CPPUNIT_ASSERT(appender->getName() == _T("D1")); CPPUNIT_ASSERT(list.size() == 1); }