00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef _LOG4CPP_PATTERNLAYOUT_HH
00010 #define _LOG4CPP_PATTERNLAYOUT_HH
00011
00012 #include <log4cpp/Portability.hh>
00013 #include <log4cpp/Layout.hh>
00014 #include <log4cpp/Configurator.hh>
00015 #include <vector>
00016 #ifdef LOG4CPP_HAVE_SSTREAM
00017 #include <sstream>
00018 #endif
00019
00020 namespace log4cpp {
00021
00025 class LOG4CPP_EXPORT PatternLayout : public Layout {
00026 public:
00030 static const char* DEFAULT_CONVERSION_PATTERN;
00031
00035 static const char* SIMPLE_CONVERSION_PATTERN;
00036
00040 static const char* BASIC_CONVERSION_PATTERN;
00041
00046 static const char* TTCC_CONVERSION_PATTERN;
00047
00048 PatternLayout();
00049 virtual ~PatternLayout();
00050
00051
00052
00053
00059 virtual std::string format(const LoggingEvent& event);
00060
00084 virtual void setConversionPattern(const std::string& conversionPattern)
00085 throw(ConfigureFailure);
00086
00087 virtual std::string getConversionPattern() const;
00088
00089 virtual void clearConversionPattern();
00090
00091 class LOG4CPP_EXPORT PatternComponent {
00092 public:
00093 inline virtual ~PatternComponent() {};
00094 virtual void append(std::ostringstream& out, const LoggingEvent& event) = 0;
00095 };
00096
00097 private:
00098 typedef std::vector<PatternComponent*> ComponentVector;
00099 ComponentVector _components;
00100
00101 std::string _conversionPattern;
00102 };
00103 }
00104
00105 #endif // _LOG4CPP_PATTERNLAYOUT_HH