Author: carnold
Date: Thu Jul 17 18:54:19 2008
New Revision: 677802

URL: http://svn.apache.org/viewvc?rev=677802&view=rev
Log:
LOGCXX-304: DOMConfigurator does not set ErrorHandler

Added:
    logging/log4cxx/trunk/src/test/resources/witness/fallback1
Modified:
    logging/log4cxx/trunk/src/changes/changes.xml
    logging/log4cxx/trunk/src/main/cpp/domconfigurator.cpp
    logging/log4cxx/trunk/src/main/cpp/fileappender.cpp
    logging/log4cxx/trunk/src/main/cpp/smtpappender.cpp
    logging/log4cxx/trunk/src/main/cpp/writerappender.cpp
    logging/log4cxx/trunk/src/main/include/log4cxx/appenderskeleton.h
    logging/log4cxx/trunk/src/main/include/log4cxx/spi/errorhandler.h
    logging/log4cxx/trunk/src/main/include/log4cxx/varia/fallbackerrorhandler.h
    logging/log4cxx/trunk/src/test/cpp/varia/errorhandlertestcase.cpp
    logging/log4cxx/trunk/src/test/resources/input/xml/fallback1.xml

Modified: logging/log4cxx/trunk/src/changes/changes.xml
URL: 
http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/changes/changes.xml?rev=677802&r1=677801&r2=677802&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/changes/changes.xml (original)
+++ logging/log4cxx/trunk/src/changes/changes.xml Thu Jul 17 18:54:19 2008
@@ -47,9 +47,10 @@
 <action issue="LOGCXX-291">Tab characters are not recognized in property 
files.<action>
 <action issue="LOGCXX-292">Value continuation does not properly handle CRLF in 
property files.<action>
 <action issue="LOGCXX-293">Escape sequences not recognized in property 
files.<action>
-<action issue="LOGCXXX-298">SMTPAppender does not build properly with 
autotools.</action>
+<action issue="LOGCXX-298">SMTPAppender does not build properly with 
autotools.</action>
 <action issue="LOGCXX-299">odbcappender.cpp does not compile with unixODBC on 
linux.</action>
 <action issue="LOGCXX-300">ODBCAppender connection settings broken (or just 
have changed).</action>
+<action issue="LOGCXX-303">DOMConfigurator does not set ErrorHandler.</action>
 <action issue="LOGCXX-304">BasicConfigurator::configure results in writer not 
set warning.</action>
 </release>
 <release version="0.10.0" date="2008-04-03" description="First Apache release">

Modified: logging/log4cxx/trunk/src/main/cpp/domconfigurator.cpp
URL: 
http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/domconfigurator.cpp?rev=677802&r1=677801&r2=677802&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/domconfigurator.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/domconfigurator.cpp Thu Jul 17 18:54:19 
2008
@@ -283,11 +283,12 @@
                                         apr_xml_doc* doc,
                                         AppenderMap& appenders)
 {
+
     ErrorHandlerPtr eh = OptionConverter::instantiateByClassName(
                 subst(getAttribute(utf8Decoder, element, CLASS_ATTR)),
                 ErrorHandler::getStaticClass(),
                 0);
-
+                
     if(eh != 0)
         {
                 eh->setAppender(appender);
@@ -319,7 +320,10 @@
                                 }
                 }
                 propSetter.activate(p);
-//                appender->setErrorHandler(eh);
+                ObjectPtrT<AppenderSkeleton> appSkeleton(appender);
+                if (appSkeleton != 0) {
+                    appSkeleton->setErrorHandler(eh);
+                }
     }
 }
 

Modified: logging/log4cxx/trunk/src/main/cpp/fileappender.cpp
URL: 
http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/fileappender.cpp?rev=677802&r1=677801&r2=677802&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/fileappender.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/fileappender.cpp Thu Jul 17 18:54:19 2008
@@ -160,7 +160,7 @@
       msg.append(1, (logchar) 0x2C /* ',' */);
       StringHelper::toString(fileAppend, msg);
       msg.append(LOG4CXX_STR(") call failed."));
-      LogLog::error(msg, e);
+      errorHandler->error(msg, e, ErrorCode::FILE_OPEN_FAILURE);
     }
   } else {
     errors++;

Modified: logging/log4cxx/trunk/src/main/cpp/smtpappender.cpp
URL: 
http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/smtpappender.cpp?rev=677802&r1=677801&r2=677802&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/smtpappender.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/smtpappender.cpp Thu Jul 17 18:54:19 2008
@@ -473,21 +473,21 @@
 {
    bool activate = true;
    if (layout == 0) {
-      LogLog::error(LOG4CXX_STR("No layout set for appender named [") +name+ 
LOG4CXX_STR("]."));
+      errorHandler->error(LOG4CXX_STR("No layout set for appender named [") 
+name+ LOG4CXX_STR("]."));
       activate = false;
    }
    if(evaluator == 0) {
-      LogLog::error(LOG4CXX_STR("No TriggeringEventEvaluator is set for 
appender [")+
+      errorHandler->error(LOG4CXX_STR("No TriggeringEventEvaluator is set for 
appender [")+
           name+LOG4CXX_STR("]."));
       activate = false;
    }
    if(smtpHost.empty()) {
-      LogLog::error(LOG4CXX_STR("No smtpHost is set for appender [")+
+      errorHandler->error(LOG4CXX_STR("No smtpHost is set for appender [")+
           name+LOG4CXX_STR("]."));
       activate = false;
    }
    if(to.empty() && cc.empty() && bcc.empty()) {
-      LogLog::error(LOG4CXX_STR("No recipient address is set for appender [")+
+      errorHandler->error(LOG4CXX_STR("No recipient address is set for 
appender [")+
           name+LOG4CXX_STR("]."));
       activate = false;
    }
@@ -497,7 +497,7 @@
    activate &= asciiCheck(from, LOG4CXX_STR("from"));
  
 #if !LOG4CXX_HAVE_LIBESMTP
-   LogLog::error(LOG4CXX_STR("log4cxx built without SMTP support."));
+   errorHandler->error(LOG4CXX_STR("log4cxx built without SMTP support."));
    activate = false;
 #endif     
    if (activate) {

Modified: logging/log4cxx/trunk/src/main/cpp/writerappender.cpp
URL: 
http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/writerappender.cpp?rev=677802&r1=677801&r2=677802&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/writerappender.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/writerappender.cpp Thu Jul 17 18:54:19 
2008
@@ -106,8 +106,8 @@
   }
 
   if (writer == 0) {
-    if (!warnedNoWriter) {
-        LogLog::error(
+    if (warnedNoWriter) {
+        errorHandler->error(
             LogString(LOG4CXX_STR("No output stream or file set for the 
appender named [")) +
                name + LOG4CXX_STR("]."));
         warnedNoWriter = true;
@@ -117,6 +117,9 @@
   }
   
   if (layout == 0) {
+    errorHandler->error(
+            LogString(LOG4CXX_STR("No layout set for the appender named [")) +
+               name + LOG4CXX_STR("]."));
     return false;
   }
 

Modified: logging/log4cxx/trunk/src/main/include/log4cxx/appenderskeleton.h
URL: 
http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/include/log4cxx/appenderskeleton.h?rev=677802&r1=677801&r2=677802&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/include/log4cxx/appenderskeleton.h (original)
+++ logging/log4cxx/trunk/src/main/include/log4cxx/appenderskeleton.h Thu Jul 
17 18:54:19 2008
@@ -81,6 +81,7 @@
         public:
                 DECLARE_ABSTRACT_LOG4CXX_OBJECT(AppenderSkeleton)
                 BEGIN_LOG4CXX_CAST_MAP()
+                        LOG4CXX_CAST_ENTRY(AppenderSkeleton)
                         LOG4CXX_CAST_ENTRY(Appender)
                         LOG4CXX_CAST_ENTRY(spi::OptionHandler)
                 END_LOG4CXX_CAST_MAP()

Modified: logging/log4cxx/trunk/src/main/include/log4cxx/spi/errorhandler.h
URL: 
http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/include/log4cxx/spi/errorhandler.h?rev=677802&r1=677801&r2=677802&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/include/log4cxx/spi/errorhandler.h (original)
+++ logging/log4cxx/trunk/src/main/include/log4cxx/spi/errorhandler.h Thu Jul 
17 18:54:19 2008
@@ -65,6 +65,11 @@
                 {
                 public:
                         DECLARE_ABSTRACT_LOG4CXX_OBJECT(ErrorHandler)
+                         BEGIN_LOG4CXX_CAST_MAP()
+                                LOG4CXX_CAST_ENTRY(ErrorHandler)
+                                LOG4CXX_CAST_ENTRY(OptionHandler)
+                        END_LOG4CXX_CAST_MAP()
+                       
                         virtual ~ErrorHandler() {}
 
                                 /**

Modified: 
logging/log4cxx/trunk/src/main/include/log4cxx/varia/fallbackerrorhandler.h
URL: 
http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/include/log4cxx/varia/fallbackerrorhandler.h?rev=677802&r1=677801&r2=677802&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/include/log4cxx/varia/fallbackerrorhandler.h 
(original)
+++ logging/log4cxx/trunk/src/main/include/log4cxx/varia/fallbackerrorhandler.h 
Thu Jul 17 18:54:19 2008
@@ -49,8 +49,8 @@
                 public:
                         DECLARE_LOG4CXX_OBJECT(FallbackErrorHandler)
                         BEGIN_LOG4CXX_CAST_MAP()
-                                LOG4CXX_CAST_ENTRY(spi::OptionHandler)
-                                LOG4CXX_CAST_ENTRY(spi::ErrorHandler)
+                                LOG4CXX_CAST_ENTRY(FallbackErrorHandler)
+                                LOG4CXX_CAST_ENTRY_CHAIN(spi::ErrorHandler)
                         END_LOG4CXX_CAST_MAP()
 
                         FallbackErrorHandler();
@@ -109,6 +109,8 @@
                         */
                         void setBackupAppender(const AppenderPtr& backup);
                 };
+                LOG4CXX_PTR_DEF(FallbackErrorHandler);
+                
         }  // namespace varia
 } // namespace log4cxx
 

Modified: logging/log4cxx/trunk/src/test/cpp/varia/errorhandlertestcase.cpp
URL: 
http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/varia/errorhandlertestcase.cpp?rev=677802&r1=677801&r2=677802&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/varia/errorhandlertestcase.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/varia/errorhandlertestcase.cpp Thu Jul 
17 18:54:19 2008
@@ -15,30 +15,21 @@
  * limitations under the License.
  */
 
-#define LOG4CXX_TEST 1
-#include <log4cxx/private/log4cxx_private.h>
-
 #include <log4cxx/logger.h>
 #include <log4cxx/xml/domconfigurator.h>
+#include <log4cxx/fileappender.h>
+#include <log4cxx/varia/fallbackerrorhandler.h>
 #include "../logunit.h"
 #include "../util/transformer.h"
 #include "../util/compare.h"
 #include "../util/controlfilter.h"
-#include "../util/threadfilter.h"
 #include "../util/linenumberfilter.h"
 #include <iostream>
-#include <log4cxx/file.h>
 
 using namespace log4cxx;
 using namespace log4cxx::helpers;
 using namespace log4cxx::xml;
 
-#define TEST1_A_PAT "FALLBACK - test - Message [0-9]"
-#define TEST1_B_PAT "FALLBACK - root - Message [0-9]"
-#define TEST1_2_PAT \
-        "^[0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} 
[0-9]\\{2\\}:[0-9]\\{2\\}:[0-9]\\{2\\},[0-9]\\{3\\} " \
-        "\\[main]\\ (DEBUG|INFO|WARN|ERROR|FATAL) .* - Message [0-9]"
-
 LOGUNIT_CLASS(ErrorHandlerTestCase)
 {
         LOGUNIT_TEST_SUITE(ErrorHandlerTestCase);
@@ -48,9 +39,6 @@
         LoggerPtr root;
         LoggerPtr logger;
 
-    static const File TEMP;
-    static const File FILTERED;
-
 
 public:
         void setUp()
@@ -64,74 +52,67 @@
                 logger->getLoggerRepository()->resetConfiguration();
         }
 
+
         void test1()
         {
                 DOMConfigurator::configure("input/xml/fallback1.xml");
+                FileAppenderPtr 
primary(root->getAppender(LOG4CXX_STR("PRIMARY")));
+                log4cxx::varia::FallbackErrorHandlerPtr 
eh(primary->getErrorHandler());
+                LOGUNIT_ASSERT(eh != 0);
+                
                 common();
 
+                std::string TEST1_PAT = 
+                       "FALLBACK - (root|test) - Message {0-9}";
+
                 ControlFilter cf;
-                cf << TEST1_A_PAT << TEST1_B_PAT << TEST1_2_PAT;
+                cf << TEST1_PAT;
 
-                ThreadFilter threadFilter;
                 LineNumberFilter lineNumberFilter;
 
                 std::vector<Filter *> filters;
                 filters.push_back(&cf);
-                filters.push_back(&threadFilter);
                 filters.push_back(&lineNumberFilter);
 
-        common();
-
                 try
                 {
-                        Transformer::transform(TEMP, FILTERED, filters);
+                        Transformer::transform("output/temp", 
"output/filtered", filters);
                 }
                 catch(UnexpectedFormatException& e)
                 {
-            std::cout << "UnexpectedFormatException :" << e.what() << 
std::endl;
+                    std::cout << "UnexpectedFormatException :" << e.what() << 
std::endl;
                         throw;
                 }
 
-        const File witness("witness/fallback");
-                LOGUNIT_ASSERT(Compare::compare(FILTERED, witness));
+
+                LOGUNIT_ASSERT(Compare::compare("output/filtered", 
"witness/fallback1"));
         }
 
         void common()
         {
                 int i = -1;
+                  
+                LOG4CXX_DEBUG(logger, "Message " << ++i);
+                LOG4CXX_DEBUG(root, "Message " << i);
 
-        std::ostringstream os;
-        os << "Message " << ++ i;
-                LOG4CXX_DEBUG(logger, os.str())
-                LOG4CXX_DEBUG(root, os.str())
-
-        os.str("");
-        os << "Message " << ++i;
-                LOG4CXX_INFO(logger, os.str())
-                LOG4CXX_INFO(root, os.str())
-
-        os.str("");
-        os << "Message " << ++i;
-                LOG4CXX_WARN(logger, os.str())
-                LOG4CXX_WARN(root, os.str())
-
-        os.str("");
-        os << "Message " << ++i;
-                LOG4CXX_ERROR(logger, os.str())
-                LOG4CXX_ERROR(root, os.str())
-
-        os.str("");
-        os << "Message " << ++i;
-                LOG4CXX_FATAL(logger, os.str())
-                LOG4CXX_FATAL(root, os.str())
-        }
-};
+                LOG4CXX_INFO(logger, "Message " << ++i);
+                LOG4CXX_INFO(root, "Message " << i);
+
+                LOG4CXX_WARN(logger, "Message " << ++i);
+                LOG4CXX_WARN(root, "Message " << i);
 
-//TODO: Not sure this test ever worked.  0.9.7 didn't call common
-//   had nothing that attempted to dispatch any log events
+                LOG4CXX_ERROR(logger, "Message " << ++i);
+                LOG4CXX_ERROR(root, "Message " << i);
 
-//LOGUNIT_TEST_SUITE_REGISTRATION(ErrorHandlerTestCase);
+                LOG4CXX_FATAL(logger, "Message " << ++i);
+                LOG4CXX_FATAL(root, "Message " << i);
 
-const File ErrorHandlerTestCase::TEMP("output/temp");
-const File ErrorHandlerTestCase::FILTERED("output/filtered");
+                LOG4CXX_DEBUG(logger, "Message " << ++i);
+                LOG4CXX_DEBUG(root, "Message " << i);
+
+                LOG4CXX_ERROR(logger, "Message " << ++i);
+                LOG4CXX_ERROR(root, "Message " << i);
+        }
+};
 
+LOGUNIT_TEST_SUITE_REGISTRATION(ErrorHandlerTestCase)

Modified: logging/log4cxx/trunk/src/test/resources/input/xml/fallback1.xml
URL: 
http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/resources/input/xml/fallback1.xml?rev=677802&r1=677801&r2=677802&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/resources/input/xml/fallback1.xml (original)
+++ logging/log4cxx/trunk/src/test/resources/input/xml/fallback1.xml Thu Jul 17 
18:54:19 2008
@@ -27,7 +27,7 @@
       <appender-ref ref="FALLBACK" />
     </errorHandler>
 
-    <param name="File" value="/xyz/x.log" />
+    <param name="File" value="/xyz/:x.log" />
     <param name="Append" value="false" />          
     
     <layout class="org.apache.log4j.PatternLayout">

Added: logging/log4cxx/trunk/src/test/resources/witness/fallback1
URL: 
http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/resources/witness/fallback1?rev=677802&view=auto
==============================================================================
--- logging/log4cxx/trunk/src/test/resources/witness/fallback1 (added)
+++ logging/log4cxx/trunk/src/test/resources/witness/fallback1 Thu Jul 17 
18:54:19 2008
@@ -0,0 +1,14 @@
+FALLBACK - test - Message 0
+FALLBACK - root - Message 0
+FALLBACK - test - Message 1
+FALLBACK - root - Message 1
+FALLBACK - test - Message 2
+FALLBACK - root - Message 2
+FALLBACK - test - Message 3
+FALLBACK - root - Message 3
+FALLBACK - test - Message 4
+FALLBACK - root - Message 4
+FALLBACK - test - Message 5
+FALLBACK - root - Message 5
+FALLBACK - test - Message 6
+FALLBACK - root - Message 6


Reply via email to