You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rm...@apache.org on 2022/01/04 00:01:39 UTC

[logging-log4cxx] 01/01: Merge branch 'master' into next_stable

This is an automated email from the ASF dual-hosted git repository.

rmiddleton pushed a commit to branch next_stable
in repository https://gitbox.apache.org/repos/asf/logging-log4cxx.git

commit 90f5c7b83659795c140c9946d68943349215efeb
Merge: 40dd1a6 6505a08
Author: Robert Middleton <ro...@rm5248.com>
AuthorDate: Mon Jan 3 19:00:27 2022 -0500

    Merge branch 'master' into next_stable

 src/main/cpp/hierarchy.cpp                       | 40 +++++++++++-----------
 src/main/cpp/logger.cpp                          |  6 ++--
 src/test/cpp/multithreadtest.cpp                 |  1 -
 src/test/cpp/throughput/log4cxxbenchmarker.cpp   | 33 +++++++++---------
 src/test/cpp/throughput/log4cxxbenchmarker.h     |  4 +--
 src/test/cpp/throughput/throughput-main.cpp      | 43 ++++++++++++------------
 src/test/resources/witness/autoConfigureTest.log |  1 +
 7 files changed, 65 insertions(+), 63 deletions(-)

diff --cc src/main/cpp/hierarchy.cpp
index de6bed4,22caa89..8c39906
--- a/src/main/cpp/hierarchy.cpp
+++ b/src/main/cpp/hierarchy.cpp
@@@ -241,26 -217,30 +241,27 @@@ LoggerPtr Hierarchy::getLogger(const Lo
  LoggerPtr Hierarchy::getLogger(const LogString& name,
  	const spi::LoggerFactoryPtr& factory)
  {
 -	std::unique_lock<std::mutex> lock(mutex);
 -
 -	LoggerMap::iterator it = loggers->find(name);
 +	std::unique_lock<std::mutex> lock(m_priv->mutex);
  
 +	LoggerMap::iterator it = m_priv->loggers.find(name);
+ 	LoggerPtr result;
 -	if (it != loggers->end())
 +
 +	if (it != m_priv->loggers.end())
  	{
- 		return it->second;
+ 		result = it->second;
  	}
- 	else
+ 	if (!result)
  	{
 -		LoggerPtr logger(factory->makeNewLoggerInstance(pool, name));
 -		logger->setHierarchy(this);
 -		if (it != loggers->end())
 -			it->second = logger;
 -		else
 -			loggers->insert(LoggerMap::value_type(name, logger));
 +		LoggerPtr logger(factory->makeNewLoggerInstance(m_priv->pool, name));
 +		logger->setHierarchy(shared_from_this());
 +		m_priv->loggers.insert(LoggerMap::value_type(name, logger));
  
 -		ProvisionNodeMap::iterator it2 = provisionNodes->find(name);
 +		ProvisionNodeMap::iterator it2 = m_priv->provisionNodes.find(name);
  
 -		if (it2 != provisionNodes->end())
 +		if (it2 != m_priv->provisionNodes.end())
  		{
  			updateChildren(it2->second, logger);
 -			provisionNodes->erase(it2);
 +			m_priv->provisionNodes.erase(it2);
  		}
  
  		updateParents(logger);
@@@ -271,17 -252,14 +273,14 @@@
  
  LoggerList Hierarchy::getCurrentLoggers() const
  {
 -	std::unique_lock<std::mutex> lock(mutex);
 +	std::unique_lock<std::mutex> lock(m_priv->mutex);
  
  	LoggerList v;
- 	LoggerMap::const_iterator it, itEnd = m_priv->loggers.end();
- 
- 	for (it = m_priv->loggers.begin(); it != itEnd; it++)
 -	for (auto& item : *this->loggers)
++	for (auto& item : m_priv->loggers)
  	{
- 		v.push_back(it->second);
+ 		if (auto pLogger = item.second)
+ 			v.push_back(pLogger);
  	}
- 
- 
  	return v;
  }
  
@@@ -317,13 -291,16 +316,16 @@@ void Hierarchy::resetConfiguration(
  
  	shutdownInternal();
  
 -	LoggerMap::const_iterator it, itEnd = loggers->end();
 +	LoggerMap::const_iterator it, itEnd = m_priv->loggers.end();
  
 -	for (it = loggers->begin(); it != itEnd; it++)
 +	for (it = m_priv->loggers.begin(); it != itEnd; it++)
  	{
- 		it->second->setLevel(0);
- 		it->second->setAdditivity(true);
- 		it->second->setResourceBundle(0);
+ 		if (auto pLogger = it->second)
+ 		{
+ 			pLogger->setLevel(0);
+ 			pLogger->setAdditivity(true);
+ 			pLogger->setResourceBundle(0);
+ 		}
  	}
  
  	//rendererMap.clear();
@@@ -338,28 -315,26 +340,26 @@@ void Hierarchy::shutdown(
  
  void Hierarchy::shutdownInternal()
  {
 -	configured = false;
 +	m_priv->configured = false;
  
- 	LoggerPtr root1 = getRootLogger();
- 
  	// begin by closing nested appenders
- 	root1->closeNestedAppenders();
 -	root->closeNestedAppenders();
++	m_priv->root->closeNestedAppenders();
  
 -	LoggerMap::iterator it, itEnd = loggers->end();
 +	LoggerMap::iterator it, itEnd = m_priv->loggers.end();
  
 -	for (it = loggers->begin(); it != itEnd; it++)
 +	for (it = m_priv->loggers.begin(); it != itEnd; it++)
  	{
- 		LoggerPtr logger = it->second;
- 		logger->closeNestedAppenders();
+ 		if (auto pLogger = it->second)
+ 			pLogger->closeNestedAppenders();
  	}
  
  	// then, remove all appenders
- 	root1->removeAllAppenders();
 -	root->removeAllAppenders();
++	m_priv->root->removeAllAppenders();
  
 -	for (it = loggers->begin(); it != itEnd; it++)
 +	for (it = m_priv->loggers.begin(); it != itEnd; it++)
  	{
- 		LoggerPtr logger = it->second;
- 		logger->removeAllAppenders();
+ 		if (auto pLogger = it->second)
+ 			pLogger->removeAllAppenders();
  	}
  }
  
diff --cc src/main/cpp/logger.cpp
index 91eb33b,90a1e88..e3db087
--- a/src/main/cpp/logger.cpp
+++ b/src/main/cpp/logger.cpp
@@@ -98,10 -55,12 +98,10 @@@ Logger::~Logger(
  
  void Logger::addAppender(const AppenderPtr newAppender)
  {
 -	log4cxx::spi::LoggerRepositoryPtr rep;
 -
 -	aai->addAppender(newAppender);
 -	if (repository)
 +	m_priv->aai.addAppender(newAppender);
 +	if (auto rep = getHierarchy())
  	{
- 		rep->fireAddAppenderEvent(this, newAppender.get());
 -		repository->fireAddAppenderEvent(this, newAppender.get());
++		m_priv->repositoryRaw->fireAddAppenderEvent(this, newAppender.get());
  	}
  }
  
@@@ -115,11 -76,11 +115,11 @@@ void Logger::reconfigure( const std::ve
  		it != appenders.cend();
  		it++ )
  	{
 -		aai->addAppender( *it );
 +		m_priv->aai.addAppender( *it );
  
 -		if (repository)
 +		if (auto rep = getHierarchy())
  		{
- 			rep->fireAddAppenderEvent(this, it->get());
 -			repository->fireAddAppenderEvent(this, it->get());
++			m_priv->repositoryRaw->fireAddAppenderEvent(this, it->get());
  		}
  	}
  }
@@@ -140,11 -101,9 +140,11 @@@ void Logger::callAppenders(const spi::L
  		}
  	}
  
 -	if (writes == 0 && repository)
 +	auto rep = getHierarchy();
 +
 +	if (writes == 0 && rep)
  	{
- 		rep->emitNoAppenderWarning(const_cast<Logger*>(this));
 -		repository->emitNoAppenderWarning(const_cast<Logger*>(this));
++		m_priv->repositoryRaw->emitNoAppenderWarning(const_cast<Logger*>(this));
  	}
  }
  
diff --cc src/test/cpp/multithreadtest.cpp
index b7dc838,91ca614..15ce488
--- a/src/test/cpp/multithreadtest.cpp
+++ b/src/test/cpp/multithreadtest.cpp
@@@ -94,15 -84,12 +94,14 @@@ public
  
  	void tearDown()
  	{
- 		//      root->getLoggerRepository()->resetConfiguration();
  	}
  
 -	void testMultithreadedLoggers(){
 +	void testMultithreadedLoggers()
 +	{
  		std::vector<std::thread> threads;
  
 -		for( int x = 0; x < 6; x++ ){
 +		for ( int x = 0; x < 6; x++ )
 +		{
  			std::thread thr( multithread_logger, 20000 );
  			threads.push_back( std::move(thr) );
  		}