Author: joseph
Date: Mon Feb 17 19:28:18 2014
New Revision: 1569092

URL: http://svn.apache.org/r1569092
Log:
LOGCXX-390

Modified:
    incubator/log4cxx/trunk/src/main/cpp/domconfigurator.cpp
    incubator/log4cxx/trunk/src/main/include/log4cxx/xml/domconfigurator.h

Modified: incubator/log4cxx/trunk/src/main/cpp/domconfigurator.cpp
URL: 
http://svn.apache.org/viewvc/incubator/log4cxx/trunk/src/main/cpp/domconfigurator.cpp?rev=1569092&r1=1569091&r2=1569092&view=diff
==============================================================================
--- incubator/log4cxx/trunk/src/main/cpp/domconfigurator.cpp (original)
+++ incubator/log4cxx/trunk/src/main/cpp/domconfigurator.cpp Mon Feb 17 
19:28:18 2014
@@ -57,23 +57,30 @@ using namespace log4cxx::rolling;
 
 
 #if APR_HAS_THREADS
-class XMLWatchdog  : public FileWatchdog
+namespace log4cxx
 {
-public:
-        XMLWatchdog(const File& filename) : FileWatchdog(filename)
-        {
-        }
-
-        /**
-        Call DOMConfigurator#doConfigure with the
-        <code>filename</code> to reconfigure log4cxx.
-        */
-        void doOnChange()
-        {
-                DOMConfigurator().doConfigure(file,
-                        LogManager::getLoggerRepository());
-        }
-};
+    namespace xml
+    {
+               class XMLWatchdog  : public FileWatchdog
+               {
+               public:
+                       XMLWatchdog(const File& filename) : 
FileWatchdog(filename)
+                       {
+                       }
+
+                       /**
+                       Call DOMConfigurator#doConfigure with the
+                       <code>filename</code> to reconfigure log4cxx.
+                       */
+                       void doOnChange()
+                       {
+                               DOMConfigurator().doConfigure(file,
+                                               
LogManager::getLoggerRepository());
+                       }
+               };
+       }
+}
+XMLWatchdog *DOMConfigurator::xdog = NULL;
 #endif
 
 
@@ -814,7 +821,8 @@ void DOMConfigurator::configureAndWatch(
 {
         File file(filename);
 #if APR_HAS_THREADS
-        XMLWatchdog * xdog = new XMLWatchdog(file);
+               if( xdog ) delete xdog;
+        xdog = new XMLWatchdog(file);
         APRInitializer::registerCleanup(xdog);
         xdog->setDelay(delay);
         xdog->start();
@@ -828,7 +836,8 @@ void DOMConfigurator::configureAndWatch(
 {
         File file(filename);
 #if APR_HAS_THREADS
-        XMLWatchdog * xdog = new XMLWatchdog(file);
+               if( xdog ) delete xdog;
+        xdog = new XMLWatchdog(file);
         APRInitializer::registerCleanup(xdog);
         xdog->setDelay(delay);
         xdog->start();
@@ -843,7 +852,9 @@ void DOMConfigurator::configureAndWatch(
 {
         File file(filename);
 #if APR_HAS_THREADS
-        XMLWatchdog * xdog = new XMLWatchdog(file);
+               if( xdog ) delete xdog;
+        xdog = new XMLWatchdog(file);
+        APRInitializer::registerCleanup(xdog);
         xdog->setDelay(delay);
         xdog->start();
 #else
@@ -857,7 +868,9 @@ void DOMConfigurator::configureAndWatch(
 {
         File file(filename);
 #if APR_HAS_THREADS
-        XMLWatchdog * xdog = new XMLWatchdog(file);
+               if( xdog ) delete xdog;
+        xdog = new XMLWatchdog(file);
+        APRInitializer::registerCleanup(xdog);
         xdog->setDelay(delay);
         xdog->start();
 #else

Modified: incubator/log4cxx/trunk/src/main/include/log4cxx/xml/domconfigurator.h
URL: 
http://svn.apache.org/viewvc/incubator/log4cxx/trunk/src/main/include/log4cxx/xml/domconfigurator.h?rev=1569092&r1=1569091&r2=1569092&view=diff
==============================================================================
--- incubator/log4cxx/trunk/src/main/include/log4cxx/xml/domconfigurator.h 
(original)
+++ incubator/log4cxx/trunk/src/main/include/log4cxx/xml/domconfigurator.h Mon 
Feb 17 19:28:18 2014
@@ -49,6 +49,7 @@ namespace log4cxx
 
         namespace xml
         {
+                       class XMLWatchdog;
 
               /**
               Use this class to initialize the log4cxx environment using a DOM 
tree.
@@ -303,7 +304,7 @@ namespace log4cxx
                         //   prevent assignment or copy statements
                         DOMConfigurator(const DOMConfigurator&);
                         DOMConfigurator& operator=(const DOMConfigurator&);
-
+                                               static XMLWatchdog *xdog;
                 };
             LOG4CXX_PTR_DEF(DOMConfigurator);
         }  // namespace xml


Reply via email to