Author: carnold
Date: Mon Nov 19 09:48:26 2007
New Revision: 596382

URL: http://svn.apache.org/viewvc?rev=596382&view=rev
Log:
LOGCXX-208: isTraceEnabled implementation missing

Modified:
    logging/log4cxx/trunk/src/main/cpp/logger.cpp
    logging/log4cxx/trunk/src/test/cpp/loggertestcase.cpp

Modified: logging/log4cxx/trunk/src/main/cpp/logger.cpp
URL: 
http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/logger.cpp?rev=596382&r1=596381&r2=596382&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/logger.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/logger.cpp Mon Nov 19 09:48:26 2007
@@ -273,6 +273,16 @@
         }
 }
 
+bool Logger::isTraceEnabled() const
+{
+        if(repository == 0 || repository->isDisabled(Level::TRACE_INT))
+        {
+                return false;
+        }
+
+        return Level::getTrace()->isGreaterOrEqual(getEffectiveLevel());
+}
+
 bool Logger::isDebugEnabled() const
 {
         if(repository == 0 || repository->isDisabled(Level::DEBUG_INT))

Modified: logging/log4cxx/trunk/src/test/cpp/loggertestcase.cpp
URL: 
http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/loggertestcase.cpp?rev=596382&r1=596381&r2=596382&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/loggertestcase.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/loggertestcase.cpp Mon Nov 19 09:48:26 
2007
@@ -31,6 +31,7 @@
 #include "insertwide.h"
 #include "testchar.h"
 #include <log4cxx/helpers/locale.h>
+#include "vectorappender.h"
 
 using namespace log4cxx;
 using namespace log4cxx::spi;
@@ -71,6 +72,8 @@
 //    CPPUNIT_TEST(testRB3);
                 CPPUNIT_TEST(testExists);
                 CPPUNIT_TEST(testHierarchy1);
+                CPPUNIT_TEST(testTrace);
+                CPPUNIT_TEST(testIsTraceEnabled);
         CPPUNIT_TEST_SUITE_END();
 
 public:
@@ -410,6 +413,47 @@
            logger->info("Hello, World.");
         }
         
+        
+  /**
+   * Tests logger.trace(Object).
+   * @since 1.2.12
+   */
+  void testTrace() {
+      VectorAppenderPtr appender = new VectorAppender();
+      LoggerPtr root = Logger::getRootLogger();
+      root->addAppender(appender);
+      root->setLevel(Level::getInfo());
+
+      LoggerPtr tracer = Logger::getLogger("com.example.Tracer");
+      tracer->setLevel(Level::getTrace());
+
+      LOG4CXX_TRACE(tracer, "Message 1");
+      LOG4CXX_TRACE(root, "Discarded Message");
+      LOG4CXX_TRACE(root, "Discarded Message");
+
+      std::vector<LoggingEventPtr> msgs(appender->vector);
+      CPPUNIT_ASSERT_EQUAL((size_t) 1, msgs.size());
+      LoggingEventPtr event = msgs[0];
+      CPPUNIT_ASSERT_EQUAL((int) Level::TRACE_INT, event->getLevel()->toInt());
+      CPPUNIT_ASSERT_EQUAL(LogString(LOG4CXX_STR("Message 1")), 
event->getMessage());
+  }
+
+    /**
+     * Tests isTraceEnabled.
+     * @since 1.2.12
+     */
+    void testIsTraceEnabled() {
+        VectorAppenderPtr appender = new VectorAppender();
+        LoggerPtr root = Logger::getRootLogger();
+        root->addAppender(appender);
+        root->setLevel(Level::getInfo());
+
+        LoggerPtr tracer = Logger::getLogger("com.example.Tracer");
+        tracer->setLevel(Level::getTrace());
+
+        CPPUNIT_ASSERT_EQUAL(true, tracer->isTraceEnabled());
+        CPPUNIT_ASSERT_EQUAL(false, root->isTraceEnabled());
+    }
 
 protected:
         static LogString MSG;


Reply via email to