Author: joseph
Date: Mon Feb 17 19:27:29 2014
New Revision: 1569091
URL: http://svn.apache.org/r1569091
Log:
LOGCXX-342
Modified:
incubator/log4cxx/trunk/src/main/cpp/propertyconfigurator.cpp
incubator/log4cxx/trunk/src/main/include/log4cxx/propertyconfigurator.h
Modified: incubator/log4cxx/trunk/src/main/cpp/propertyconfigurator.cpp
URL:
http://svn.apache.org/viewvc/incubator/log4cxx/trunk/src/main/cpp/propertyconfigurator.cpp?rev=1569091&r1=1569090&r2=1569091&view=diff
==============================================================================
--- incubator/log4cxx/trunk/src/main/cpp/propertyconfigurator.cpp (original)
+++ incubator/log4cxx/trunk/src/main/cpp/propertyconfigurator.cpp Mon Feb 17
19:27:29 2014
@@ -51,31 +51,34 @@ using namespace log4cxx::config;
#if APR_HAS_THREADS
#include <log4cxx/helpers/filewatchdog.h>
-
-class PropertyWatchdog : public FileWatchdog
+namespace log4cxx
{
-public:
- PropertyWatchdog(const File& filename) : FileWatchdog(filename)
- {
- }
+ class PropertyWatchdog : public FileWatchdog
+ {
+ public:
+ PropertyWatchdog(const File& filename) :
FileWatchdog(filename)
+ {
+ }
+
+ /**
+ Call PropertyConfigurator#doConfigure(const String&
configFileName,
+ const spi::LoggerRepositoryPtr& hierarchy) with the
+ <code>filename</code> to reconfigure log4cxx.
+ */
+ void doOnChange()
+ {
+ PropertyConfigurator().doConfigure(file,
+
LogManager::getLoggerRepository());
+ }
+ };
+}
+
+PropertyWatchdog *PropertyConfigurator::pdog = NULL;
- /**
- Call PropertyConfigurator#doConfigure(const String& configFileName,
- const spi::LoggerRepositoryPtr& hierarchy) with the
- <code>filename</code> to reconfigure log4cxx.
- */
- void doOnChange()
- {
- PropertyConfigurator().doConfigure(file,
- LogManager::getLoggerRepository());
- }
-};
#endif
IMPLEMENT_LOG4CXX_OBJECT(PropertyConfigurator)
-
-
PropertyConfigurator::PropertyConfigurator()
: registry(new std::map<LogString, AppenderPtr>()), loggerFactory(new
DefaultLoggerFactory())
{
@@ -137,7 +140,9 @@ void PropertyConfigurator::configureAndW
void PropertyConfigurator::configureAndWatch(
const File& configFilename, long delay)
{
- PropertyWatchdog * pdog = new PropertyWatchdog(configFilename);
+ if(pdog)
+ delete pdog;
+ pdog = new PropertyWatchdog(configFilename);
APRInitializer::registerCleanup(pdog);
pdog->setDelay(delay);
pdog->start();
Modified:
incubator/log4cxx/trunk/src/main/include/log4cxx/propertyconfigurator.h
URL:
http://svn.apache.org/viewvc/incubator/log4cxx/trunk/src/main/include/log4cxx/propertyconfigurator.h?rev=1569091&r1=1569090&r2=1569091&view=diff
==============================================================================
--- incubator/log4cxx/trunk/src/main/include/log4cxx/propertyconfigurator.h
(original)
+++ incubator/log4cxx/trunk/src/main/include/log4cxx/propertyconfigurator.h Mon
Feb 17 19:27:29 2014
@@ -50,6 +50,7 @@ namespace log4cxx
class LoggerFactory;
}
+ class PropertyWatchdog;
/**
Allows the configuration of log4cxx from an external file. See
<b>{@link #doConfigure(const File&, log4cxx::spi::LoggerRepositoryPtr&)}</b>
@@ -384,6 +385,7 @@ protected:
private:
PropertyConfigurator(const PropertyConfigurator&);
PropertyConfigurator& operator=(const PropertyConfigurator&);
+ static PropertyWatchdog *pdog;
}; // class PropertyConfigurator
} // namespace log4cxx