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
00086 virtual std::string getConversionPattern() const;
00087
00088 virtual void clearConversionPattern();
00089
00090 class LOG4CPP_EXPORT PatternComponent {
00091 public:
00092 inline virtual ~PatternComponent() {};
00093 virtual void append(std::ostringstream& out, const LoggingEvent& event) = 0;
00094 };
00095
00096 private:
00097 typedef std::vector<PatternComponent*> ComponentVector;
00098 ComponentVector _components;
00099
00100 std::string _conversionPattern;
00101 };
00102 }
00103
00104 #endif // _LOG4CPP_PATTERNLAYOUT_HH