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:38 UTC

[logging-log4cxx] branch next_stable updated (40dd1a6 -> 90f5c7b)

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

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


    from 40dd1a6  Reduce indirection in Logger and Hiearchy implementations (#96)
     add 0137dae  Allow throughputtests to be built when LOGCHAR_IS_WCHAR is on (#92)
     add 61052dc  Don't calculate results more than once.
     add 6505a08  [LOGCXX-546] Prevent serialization of a multi-threaded application when using disabled logging statements
     new 90f5c7b  Merge branch 'master' into next_stable

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 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(-)
 create mode 100644 src/test/resources/witness/autoConfigureTest.log

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

Posted by rm...@apache.org.
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) );
  		}