⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 domconfigurator.h

📁 log4cxx 0.10 unix下编译包
💻 H
字号:
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements.  See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License.  You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */#ifndef _LOG4CXX_XML_DOM_CONFIGURATOR_H#define _LOG4CXX_XML_DOM_CONFIGURATOR_H#if defined(_MSC_VER)#pragma warning (push)#pragma warning ( disable: 4231 4251 4275 4786 )#endif#include <log4cxx/logstring.h>#include <map>#include <log4cxx/appender.h>#include <log4cxx/layout.h>#include <log4cxx/logger.h>#include <log4cxx/helpers/properties.h>#include <log4cxx/spi/configurator.h>#include <log4cxx/helpers/charsetdecoder.h>#include <log4cxx/spi/filter.h>#include <log4cxx/rolling/triggeringpolicy.h>#include <log4cxx/rolling/rollingpolicy.h>#include <log4cxx/file.h>#include <log4cxx/config/propertysetter.h>extern "C" {   struct apr_xml_doc;   struct apr_xml_elem;}namespace log4cxx{        namespace xml        {              /**              Use this class to initialize the log4cxx environment using a DOM tree.              <p>Sometimes it is useful to see how log4cxx is reading configuration              files. You can enable log4cxx internal logging by setting the              <code>debug</code> attribute in the              <code>log4cxx</code> element. As in              <pre>                      &lt;log4j:configuration <b>debug="true"</b> xmlns:log4j="http://jakarta.apache.org/log4j/">                      ...                      &lt;/log4j:configuration>              </pre>              <p>There are sample XML files included in the package.              */                class LOG4CXX_EXPORT DOMConfigurator :                        virtual public spi::Configurator,                        virtual public helpers::ObjectImpl                {                protected:                        typedef std::map<LogString, AppenderPtr> AppenderMap;                        /**                        Used internally to parse appenders by IDREF name.                        */                        AppenderPtr findAppenderByName(                                log4cxx::helpers::Pool& p,                                log4cxx::helpers::CharsetDecoderPtr& utf8Decoder,                                apr_xml_elem* elem,                                apr_xml_doc* doc,                                const LogString& appenderName,                                AppenderMap& appenders);                        /**                        Used internally to parse appenders by IDREF element.                        */                        AppenderPtr findAppenderByReference(                                log4cxx::helpers::Pool& p,                                log4cxx::helpers::CharsetDecoderPtr& utf8Decoder,                                apr_xml_elem* appenderRef,                                apr_xml_doc* doc,                                AppenderMap& appenders);                        /**                        Used internally to parse an appender element.                        */                        AppenderPtr parseAppender(                            log4cxx::helpers::Pool& p,                            log4cxx::helpers::CharsetDecoderPtr& utf8Decoder,                            apr_xml_elem* appenderElement,                            apr_xml_doc* doc,                            AppenderMap& appenders);                        /**                        Used internally to parse an {@link spi::ErrorHandler ErrorHandler } element.                        */                        void parseErrorHandler(                            log4cxx::helpers::Pool& p,                            log4cxx::helpers::CharsetDecoderPtr& utf8Decoder,                            apr_xml_elem* element,                             AppenderPtr& appender,                            apr_xml_doc* doc,                            AppenderMap& appenders);                        /**                         Used internally to parse a filter element.                        */                        void parseFilters(                           log4cxx::helpers::Pool& p,                           log4cxx::helpers::CharsetDecoderPtr& utf8Decoder,                           apr_xml_elem* element,                           std::vector<log4cxx::spi::FilterPtr>& filters);                        /**                        Used internally to parse a logger element.                        */                        void parseLogger(                            log4cxx::helpers::Pool& p,                            log4cxx::helpers::CharsetDecoderPtr& utf8Decoder,                            apr_xml_elem* loggerElement,                            apr_xml_doc* doc,                            AppenderMap& appenders);                        /**                         Used internally to parse the logger factory element.                        */                        void parseLoggerFactory(                            log4cxx::helpers::Pool& p,                            log4cxx::helpers::CharsetDecoderPtr& utf8Decoder,                            apr_xml_elem* factoryElement);                        /**                         Used internally to parse the logger factory element.                        */                        log4cxx::helpers::ObjectPtr parseTriggeringPolicy(                            log4cxx::helpers::Pool& p,                            log4cxx::helpers::CharsetDecoderPtr& utf8Decoder,                            apr_xml_elem* factoryElement);                        /**                         Used internally to parse the logger factory element.                        */                        log4cxx::rolling::RollingPolicyPtr parseRollingPolicy(                            log4cxx::helpers::Pool& p,                            log4cxx::helpers::CharsetDecoderPtr& utf8Decoder,                            apr_xml_elem* factoryElement);                        /**                         Used internally to parse the root logger element.                        */                        void parseRoot(log4cxx::helpers::Pool& p,                             log4cxx::helpers::CharsetDecoderPtr& utf8Decoder,                            apr_xml_elem* rootElement, apr_xml_doc* doc, AppenderMap& appenders);                        /**                         Used internally to parse the children of a logger element.                        */                        void parseChildrenOfLoggerElement(                                log4cxx::helpers::Pool& p,                                log4cxx::helpers::CharsetDecoderPtr& utf8Decoder,                                apr_xml_elem* catElement,                                LoggerPtr logger, bool isRoot,                                apr_xml_doc* doc,                                AppenderMap& appenders);                        /**                         Used internally to parse a layout element.                        */                        LayoutPtr parseLayout(                            log4cxx::helpers::Pool& p,                            log4cxx::helpers::CharsetDecoderPtr& utf8Decoder,                            apr_xml_elem* layout_element);                        /**                         Used internally to parse a level  element.                        */                        void parseLevel(                                log4cxx::helpers::Pool& p,                                log4cxx::helpers::CharsetDecoderPtr& utf8Decoder,                                apr_xml_elem* element,                                LoggerPtr logger, bool isRoot);                        void setParameter(                                log4cxx::helpers::Pool& p,                                log4cxx::helpers::CharsetDecoderPtr& utf8Decoder,                                apr_xml_elem* elem,                        log4cxx::config::PropertySetter& propSetter);                        /**                         Used internally to configure the log4cxx framework from                         an in-memory representation of an XML document.                        */                        void parse(                            log4cxx::helpers::Pool& p,                            log4cxx::helpers::CharsetDecoderPtr& utf8Decoder,                            apr_xml_elem* element,                             apr_xml_doc* doc,                            AppenderMap& appenders);                public:                        DOMConfigurator();                        DECLARE_LOG4CXX_OBJECT(DOMConfigurator)                        BEGIN_LOG4CXX_CAST_MAP()                                LOG4CXX_CAST_ENTRY(spi::Configurator)                        END_LOG4CXX_CAST_MAP()                        DOMConfigurator(log4cxx::helpers::Pool& p);                        void addRef() const;                        void releaseRef() const;                        /**                        A static version of #doConfigure.                        */                        static void configure(const std::string& filename);#if LOG4CXX_WCHAR_T_API                        static void configure(const std::wstring& filename);#endif#if LOG4CXX_UNICHAR_API                        static void configure(const std::basic_string<UniChar>& filename);#endif#if LOG4CXX_CFSTRING_API                        static void configure(const CFStringRef& filename);#endif                        /**                        Like #configureAndWatch(const std::string& configFilename, long delay)                        except that the default delay as defined by                        log4cxx::helpers::FileWatchdog#DEFAULT_DELAY is used.                        @param configFilename A log4j configuration file in XML format.                        */                        static void configureAndWatch(const std::string& configFilename);#if LOG4CXX_WCHAR_T_API                        static void configureAndWatch(const std::wstring& configFilename);#endif#if LOG4CXX_UNICHAR_API                        static void configureAndWatch(const std::basic_string<UniChar>& configFilename);#endif#if LOG4CXX_CFSTRING_API                        static void configureAndWatch(const CFStringRef& configFilename);#endif                        /**                        Read the configuration file <code>configFilename</code> if it                        exists. Moreover, a thread will be created that will periodically                        check if <code>configFilename</code> has been created or                        modified. The period is determined by the <code>delay</code>                        argument. If a change or file creation is detected, then                        <code>configFilename</code> is read to configure log4cxx.                        @param configFilename A log4j configuration file in XML format.                        @param delay The delay in milliseconds to wait between each check.                        */                        static void configureAndWatch(const std::string& configFilename,                                long delay);#if LOG4CXX_WCHAR_T_API                        static void configureAndWatch(const std::wstring& configFilename,                                long delay);#endif#if LOG4CXX_UNICHAR_API                        static void configureAndWatch(const std::basic_string<UniChar>& configFilename,                                long delay);#endif#if LOG4CXX_CFSTRING_API                        static void configureAndWatch(const CFStringRef& configFilename,                                long delay);#endif                        /**                        Interpret the XML file pointed by <code>filename</code> and set up                        log4cxx accordingly.                        <p>The configuration is done relative to the hierarchy parameter.                        @param filename The file to parse.                        @param repository The hierarchy to operation upon.                        */                        void doConfigure(const File& filename,                                spi::LoggerRepositoryPtr& repository);                protected:                        static LogString getAttribute(                            log4cxx::helpers::CharsetDecoderPtr& utf8Decoder,                            apr_xml_elem*,                             const std::string& attrName);                        LogString subst(const LogString& value);                protected:                        helpers::Properties props;                        spi::LoggerRepositoryPtr repository;                        spi::LoggerFactoryPtr loggerFactory;                 private:                        //   prevent assignment or copy statements                        DOMConfigurator(const DOMConfigurator&);                        DOMConfigurator& operator=(const DOMConfigurator&);                };            LOG4CXX_PTR_DEF(DOMConfigurator);        }  // namespace xml} // namespace log4cxx#if defined(_MSC_VER)#pragma warning (pop)#endif#endif // _LOG4CXX_XML_DOM_CONFIGURATOR_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -