--- src/propertyconfigurator.cpp 2006/12/13 10:19:10 +++ src/propertyconfigurator.cpp 2006/12/13 12:11:50 @@ -37,12 +37,13 @@ #include #include #include - +#include using namespace log4cxx; using namespace log4cxx::spi; using namespace log4cxx::helpers; using namespace log4cxx::config; +using namespace log4cxx::rolling; #if APR_HAS_THREADS @@ -349,7 +350,7 @@ continue; } - LogLog::debug(((LogString) LOG4CXX_STR("Parsing appender named ") LOG4CXX_EOL) + LogLog::debug((LogString) LOG4CXX_STR("Parsing appender named \"") + appenderName + LOG4CXX_STR("\".")); appender = parseAppender(props, appenderName); @@ -409,15 +410,69 @@ //configureOptionHandler(layout, layoutPrefix + ".", props); PropertySetter::setProperties(layout, props, layoutPrefix + LOG4CXX_STR("."), p); - LogLog::debug((LogString) LOG4CXX_STR("End of parsing for \"") - + appenderName + LOG4CXX_STR("\".")); + LogLog::debug((LogString) LOG4CXX_STR("End of parsing layout options for \"") + + appenderName + LOG4CXX_STR("\".")); + } + } + + RollingFileAppenderPtr rfa(appender); + if (rfa != NULL) + { + // most RFAs will have a rollingPolicy, but it's not strictly mandatory as + // the RFA falls back to a FixedWindowRollingPolicy + LogString rollingPolicyPrefix = prefix + LOG4CXX_STR(".rollingPolicy"); + LogString rollingPolicyName(props.getProperty(rollingPolicyPrefix)); + if (!rollingPolicyName.empty()) + { + // ***CS*** + RollingPolicyPtr rollingPolicy = OptionConverter::instantiateByKey( + props, rollingPolicyPrefix, RollingPolicy::getStaticClass(), 0); + + if (rollingPolicy != 0) + { + rfa->setRollingPolicy(rollingPolicy); + + LogLog::debug((LogString) LOG4CXX_STR("Parsing rolling policy options for \"") + + appenderName + LOG4CXX_STR("\".")); + + PropertySetter::setProperties(rollingPolicy, props, rollingPolicyPrefix + LOG4CXX_STR("."), p); + + LogLog::debug((LogString) LOG4CXX_STR("End of parsing rolling policy options for \"") + + appenderName + LOG4CXX_STR("\".")); + + } + } + + // RFAs can have a triggeringPolicy as well. If there is none, the RFA will + // use the rollingPolicy (if it's a triggeringPolicy as well) or + // ManualTriggeringPolicy + LogString triggeringPolicyPrefix = prefix + LOG4CXX_STR(".triggeringPolicy"); + LogString triggeringPolicyName(props.getProperty(triggeringPolicyPrefix)); + if (!triggeringPolicyName.empty()) + { + TriggeringPolicyPtr triggeringPolicy = OptionConverter::instantiateByKey( + props, triggeringPolicyPrefix, TriggeringPolicy::getStaticClass(), 0); + + if (triggeringPolicy != 0) + { + rfa->setTriggeringPolicy(triggeringPolicy); + + LogLog::debug((LogString) LOG4CXX_STR("Parsing triggering policy options for \"") + + appenderName + LOG4CXX_STR("\".")); + + PropertySetter::setProperties(triggeringPolicy, props, triggeringPolicyPrefix + LOG4CXX_STR("."), p); + + LogLog::debug((LogString) LOG4CXX_STR("End of parsing triggering policy options for \"") + + appenderName + LOG4CXX_STR("\".")); + } } + } //configureOptionHandler((OptionHandler) appender, prefix + _T("."), props); PropertySetter::setProperties(appender, props, prefix + LOG4CXX_STR("."), p); - LogLog::debug((LogString) LOG4CXX_STR("Parsed \"") - + appenderName + LOG4CXX_STR("\" options.")); + LogLog::debug((LogString) LOG4CXX_STR("Parsed \"") + + appenderName + LOG4CXX_STR("\" options.")); } registryPut(appender);