BufferingAppender.hh 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /*
  2. * Copyright 2002, LifeLine Networks BV (www.lifeline.nl). All rights reserved.
  3. * Copyright 2002, Bastiaan Bakker. All rights reserved.
  4. *
  5. * See the COPYING file for the terms of usage and distribution.
  6. */
  7. #if !defined(h_ebd0ee89_622d_4af1_9a9d_d0e057debe86)
  8. #define h_ebd0ee89_622d_4af1_9a9d_d0e057debe86
  9. #include <log4cpp/LayoutAppender.hh>
  10. #include <log4cpp/TriggeringEventEvaluator.hh>
  11. #include <list>
  12. #include <memory>
  13. namespace log4cpp
  14. {
  15. class LOG4CPP_EXPORT BufferingAppender : public LayoutAppender
  16. {
  17. public:
  18. BufferingAppender(const std::string name, unsigned long max_size, std::LOG4CPP_UNIQUE_PTR<Appender> sink,
  19. std::LOG4CPP_UNIQUE_PTR<TriggeringEventEvaluator> evaluator);
  20. virtual void close() { sink_->close(); }
  21. bool getLossy() const { return lossy_; }
  22. void setLossy(bool lossy) { lossy_ = lossy; }
  23. protected:
  24. virtual void _append(const LoggingEvent& event);
  25. private:
  26. typedef std::list<LoggingEvent> queue_t;
  27. queue_t queue_;
  28. unsigned long max_size_;
  29. std::LOG4CPP_UNIQUE_PTR<Appender> sink_;
  30. std::LOG4CPP_UNIQUE_PTR<TriggeringEventEvaluator> evaluator_;
  31. bool lossy_;
  32. void dump();
  33. };
  34. }
  35. #endif // h_ebd0ee89_622d_4af1_9a9d_d0e057debe86