You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4cxx-dev@logging.apache.org by ca...@apache.org on 2006/12/13 01:21:20 UTC
svn commit: r486425 - in /logging/log4cxx/trunk:
include/log4cxx/dailyrollingfileappender.h
include/log4cxx/rollingfileappender.h src/class.cpp
src/obsoleterollingfileappender.cpp
tests/src/rolling/obsoleterollingfileappendertest.cpp
Author: carnold
Date: Tue Dec 12 16:21:20 2006
New Revision: 486425
URL: http://svn.apache.org/viewvc?view=rev&rev=486425
Log:
LOGCXX-52: Config support for old-style RFA
Modified:
logging/log4cxx/trunk/include/log4cxx/dailyrollingfileappender.h
logging/log4cxx/trunk/include/log4cxx/rollingfileappender.h
logging/log4cxx/trunk/src/class.cpp
logging/log4cxx/trunk/src/obsoleterollingfileappender.cpp
logging/log4cxx/trunk/tests/src/rolling/obsoleterollingfileappendertest.cpp
Modified: logging/log4cxx/trunk/include/log4cxx/dailyrollingfileappender.h
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/include/log4cxx/dailyrollingfileappender.h?view=diff&rev=486425&r1=486424&r2=486425
==============================================================================
--- logging/log4cxx/trunk/include/log4cxx/dailyrollingfileappender.h (original)
+++ logging/log4cxx/trunk/include/log4cxx/dailyrollingfileappender.h Tue Dec 12 16:21:20 2006
@@ -47,7 +47,7 @@
* @author Curt Arnold
* @deprecated Replaced by {@link org.apache.log4j.rolling.RollingFileAppender}
*/
-class DailyRollingFileAppender : public log4cxx::helpers::ObjectImpl, Appender {
+class LOG4CXX_EXPORT DailyRollingFileAppender : public log4cxx::helpers::ObjectImpl, Appender {
DECLARE_LOG4CXX_OBJECT(DailyRollingFileAppender)
BEGIN_LOG4CXX_CAST_MAP()
LOG4CXX_CAST_ENTRY(DailyRollingFileAppender)
Modified: logging/log4cxx/trunk/include/log4cxx/rollingfileappender.h
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/include/log4cxx/rollingfileappender.h?view=diff&rev=486425&r1=486424&r2=486425
==============================================================================
--- logging/log4cxx/trunk/include/log4cxx/rollingfileappender.h (original)
+++ logging/log4cxx/trunk/include/log4cxx/rollingfileappender.h Tue Dec 12 16:21:20 2006
@@ -54,7 +54,10 @@
log4cxx::rolling::RollingFileAppenderPtr rfa;
public:
- DECLARE_LOG4CXX_OBJECT( RollingFileAppender )
+ //
+ // Use custom class to use non-default name to avoid
+ // conflict with log4cxx::rolling::RollingFileAppender
+ DECLARE_LOG4CXX_OBJECT_WITH_CUSTOM_CLASS( RollingFileAppender, ClassRollingFileAppender )
BEGIN_LOG4CXX_CAST_MAP()
LOG4CXX_CAST_ENTRY( RollingFileAppender )
LOG4CXX_CAST_ENTRY( Appender )
Modified: logging/log4cxx/trunk/src/class.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/class.cpp?view=diff&rev=486425&r1=486424&r2=486425
==============================================================================
--- logging/log4cxx/trunk/src/class.cpp (original)
+++ logging/log4cxx/trunk/src/class.cpp Tue Dec 12 16:21:20 2006
@@ -98,29 +98,30 @@
const Class& Class::forName(const LogString& className)
{
- LogString strippedClassName;
- LogString::size_type pos = className.find_last_of(LOG4CXX_STR('.'));
- if (pos != LogString::npos)
- {
- strippedClassName.assign(className.substr(pos + 1));
- }
- else
- {
- strippedClassName.assign(className);
- }
- strippedClassName = StringHelper::toLowerCase(strippedClassName);
-
- const Class * clazz = getRegistry()[strippedClassName];
-
+ LogString lowerName(StringHelper::toLowerCase(className));
+ //
+ // check registry using full class name
+ //
+ const Class* clazz = getRegistry()[lowerName];
if (clazz == 0) {
- //
- // make sure all well-known classes are registered
- //
- registerClasses();
- clazz = getRegistry()[strippedClassName];
- if (clazz == 0) {
- throw ClassNotFoundException(className);
+ LogString::size_type pos = className.find_last_of(LOG4CXX_STR('.'));
+ if (pos != LogString::npos) {
+ LogString terminalName(lowerName, pos + 1, LogString::npos);
+ clazz = getRegistry()[terminalName];
+ if (clazz == 0) {
+ registerClasses();
+ clazz = getRegistry()[lowerName];
+ if (clazz == 0) {
+ clazz = getRegistry()[terminalName];
+ }
+ }
+ } else {
+ registerClasses();
+ clazz = getRegistry()[lowerName];
}
+ }
+ if (clazz == 0) {
+ throw ClassNotFoundException(className);
}
return *clazz;
Modified: logging/log4cxx/trunk/src/obsoleterollingfileappender.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/obsoleterollingfileappender.cpp?view=diff&rev=486425&r1=486424&r2=486425
==============================================================================
--- logging/log4cxx/trunk/src/obsoleterollingfileappender.cpp (original)
+++ logging/log4cxx/trunk/src/obsoleterollingfileappender.cpp Tue Dec 12 16:21:20 2006
@@ -28,14 +28,34 @@
using namespace log4cxx::helpers;
using namespace log4cxx::spi;
+namespace log4cxx {
+ class ClassRollingFileAppender : public Class
+ {
+ public:
+ ClassRollingFileAppender() : helpers::Class() {}
+ virtual const log4cxx::logchar* getName() const {
+ return LOG4CXX_STR("org.apache.log4j.RollingFileAppender");
+ }
+ virtual ObjectPtr newInstance() const {
+ return new RollingFileAppender();
+ }
+ };
+}
+
const log4cxx::helpers::Class& RollingFileAppender::getClass() const { return getStaticClass(); }
-const log4cxx::helpers::Class& RollingFileAppender::getStaticClass() {
+const log4cxx::helpers::Class& RollingFileAppender::getStaticClass() {
static ClassRollingFileAppender theClass;
return theClass;
+}
+const log4cxx::helpers::ClassRegistration& RollingFileAppender::registerClass() {
+ static log4cxx::helpers::ClassRegistration classReg(RollingFileAppender::getStaticClass);
+ return classReg;
}
namespace log4cxx { namespace classes {
- bool ObsoleteRollingFileAppenderIsRegistered = false;
- /* log4cxx::helpers::Class::registerClass(RollingFileAppender::getStaticClass()); */} }
+const log4cxx::helpers::ClassRegistration& ObsoleteRollingFileAppenderRegistration =
+ RollingFileAppender::registerClass();
+} }
+
RollingFileAppender::RollingFileAppender()
Modified: logging/log4cxx/trunk/tests/src/rolling/obsoleterollingfileappendertest.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/tests/src/rolling/obsoleterollingfileappendertest.cpp?view=diff&rev=486425&r1=486424&r2=486425
==============================================================================
--- logging/log4cxx/trunk/tests/src/rolling/obsoleterollingfileappendertest.cpp (original)
+++ logging/log4cxx/trunk/tests/src/rolling/obsoleterollingfileappendertest.cpp Tue Dec 12 16:21:20 2006
@@ -45,11 +45,10 @@
*/
class ObsoleteRollingFileAppenderTest : public CppUnit::TestFixture {
CPPUNIT_TEST_SUITE(ObsoleteRollingFileAppenderTest);
-// TODO: Property configurator isn't able to distinguish between
-// obsolete and o.a.l.rolling.RollingFileAppender
-// CPPUNIT_TEST(test1);
+ CPPUNIT_TEST(test1);
CPPUNIT_TEST(test2);
CPPUNIT_TEST(testIsOptionHandler);
+ CPPUNIT_TEST(testClassForName);
CPPUNIT_TEST_SUITE_END();
@@ -135,6 +134,12 @@
void testIsOptionHandler() {
RollingFileAppenderPtr rfa(new RollingFileAppender());
CPPUNIT_ASSERT_EQUAL(true, rfa->instanceof(log4cxx::spi::OptionHandler::getStaticClass()));
+ }
+
+ void testClassForName() {
+ LogString className(LOG4CXX_STR("org.apache.log4j.RollingFileAppender"));
+ const Class& myclass = Class::forName(className);
+ CPPUNIT_ASSERT_EQUAL(className, LogString(myclass.getName()));
}
};