diff options
Diffstat (limited to 'src/main/include/log4cxx/pattern/patternconverter.h')
-rw-r--r-- | src/main/include/log4cxx/pattern/patternconverter.h | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/src/main/include/log4cxx/pattern/patternconverter.h b/src/main/include/log4cxx/pattern/patternconverter.h new file mode 100644 index 0000000..f5ad142 --- /dev/null +++ b/src/main/include/log4cxx/pattern/patternconverter.h @@ -0,0 +1,124 @@ +/* + * 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_PATTERN_PATTERN_CONVERTER_H +#define _LOG4CXX_PATTERN_PATTERN_CONVERTER_H + + +#include <log4cxx/helpers/objectimpl.h> +#include <log4cxx/logstring.h> +#include <vector> + +#ifdef _MSC_VER +// disable identifier too wide for debugging warning +#pragma warning ( disable: 4231 4251 4275 4786 ) +#endif + +#define DECLARE_LOG4CXX_PATTERN(cls) DECLARE_ABSTRACT_LOG4CXX_OBJECT(cls) + +namespace log4cxx { + namespace pattern { + + typedef std::vector<LogString> OptionsList; + +/** + + <p>PatternConverter is an abstract class that provides the + formatting functionality that derived classes need. + + <p>Conversion specifiers in a conversion patterns are parsed to + individual PatternConverters. Each of which is responsible for + converting an object in a converter specific manner. + + */ +class LOG4CXX_EXPORT PatternConverter : public virtual log4cxx::helpers::ObjectImpl { + + /** + * Converter name. + */ + const LogString name; + + /** + * Converter style name. + */ + const LogString style; + + +protected: + /** + * Create a new pattern converter. + * @param name name for pattern converter. + * @param style CSS style for formatted output. + */ + PatternConverter(const LogString& name, + const LogString& style); + + virtual ~PatternConverter(); + +public: + DECLARE_LOG4CXX_PATTERN(PatternConverter) + BEGIN_LOG4CXX_CAST_MAP() + LOG4CXX_CAST_ENTRY(PatternConverter) + END_LOG4CXX_CAST_MAP() + + /** + * Formats an object into a string buffer. + * @param obj event to format, may not be null. + * @param toAppendTo string buffer to which the formatted event will be appended. May not be null. + * @param p pool for any allocations necessary during formatting. + */ + virtual void format(const log4cxx::helpers::ObjectPtr& obj, + LogString& toAppendTo, + log4cxx::helpers::Pool& p) const = 0; + + /** + * This method returns the name of the conversion pattern. + * + * The name can be useful to certain Layouts such as HTMLLayout. + * + * @return the name of the conversion pattern + */ + LogString getName() const; + + /** + * This method returns the CSS style class that should be applied to + * the LoggingEvent passed as parameter, which can be null. + * + * This information is currently used only by HTMLLayout. + * + * @param e null values are accepted + * @return the name of the conversion pattern + */ + virtual LogString getStyleClass(const log4cxx::helpers::ObjectPtr& e) const; + +protected: +/** +* Appends content in the locale code page to a LogString. +* @param toAppendTo string to which content is appended. +* @param src content. +*/ + static void append(LogString& toAppendTo, const std::string& src); +}; + + +LOG4CXX_PTR_DEF(PatternConverter); + + } +} + + +#endif |