00001 #if !defined(h_ebd0ee89_622d_4af1_9a9d_d0e057debe86) 00002 #define h_ebd0ee89_622d_4af1_9a9d_d0e057debe86 00003 00004 #include <log4cpp/LayoutAppender.hh> 00005 #include <log4cpp/TriggeringEventEvaluator.hh> 00006 #include <list> 00007 #include <memory> 00008 00009 namespace log4cpp 00010 { 00011 class LOG4CPP_EXPORT BufferingAppender : public LayoutAppender 00012 { 00013 public: 00014 BufferingAppender(const std::string name, unsigned long max_size, std::auto_ptr<Appender> sink, 00015 std::auto_ptr<TriggeringEventEvaluator> evaluator); 00016 00017 virtual void close() { sink_->close(); } 00018 00019 bool getLossy() const { return lossy_; } 00020 void setLossy(bool lossy) { lossy_ = lossy; } 00021 00022 protected: 00023 virtual void _append(const LoggingEvent& event); 00024 00025 private: 00026 typedef std::list<LoggingEvent> queue_t; 00027 00028 queue_t queue_; 00029 unsigned long max_size_; 00030 std::auto_ptr<Appender> sink_; 00031 std::auto_ptr<TriggeringEventEvaluator> evaluator_; 00032 bool lossy_; 00033 00034 void dump(); 00035 }; 00036 } 00037 00038 #endif // h_ebd0ee89_622d_4af1_9a9d_d0e057debe86