Log4CPP.Appender.hpp 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #pragma once
  2. #include <memory>
  3. #pragma warning (disable : 4251)
  4. #include "Log4CPP.Define.hpp"
  5. #include "Log4CPP.LoggingEvent.hpp"
  6. #include "Log4CPP.LogLevel.hpp"
  7. //-----------------------------------------------------------------------------
  8. // Appender
  9. //-----------------------------------------------------------------------------
  10. namespace Log4CPP
  11. {
  12. class Layout;
  13. class Filter;
  14. }
  15. namespace Log4CPP
  16. {
  17. class Log4CPP_API Appender
  18. {
  19. Appender (const Appender &) = delete;
  20. Appender (Appender &&) = delete;
  21. Appender & operator = (const Appender &) = delete;
  22. Appender & operator = (Appender &&) = delete;
  23. public:
  24. Appender ();
  25. virtual ~Appender () = 0;
  26. public:
  27. virtual bool Open ();
  28. virtual void Close ();
  29. bool IsClosed () const { return m_bClosed; }
  30. public:
  31. virtual void Append (LoggingEvent * pkt) = 0;
  32. public:
  33. void SetName (CV_String & Name);
  34. TLogString GetName () const; // m_Name
  35. TLogString GetType () const; // m_Type
  36. void SetThreshold (int value);
  37. int GetThreshold () const { return static_cast <int> (m_Threshold); }
  38. public:
  39. virtual void SetLayout (LayoutPtr layout);
  40. virtual Layout * GetLayout ();
  41. virtual void AddFilter (FilterPtr filter);
  42. virtual void NewLine (int Level) {}
  43. virtual void SetOption (const TLogString & key, const TLogString & value);
  44. // 所有配置装载完毕后, 调用这个函数
  45. virtual void ActivateOptions () {}
  46. public:
  47. TLogString Rendering (const LoggingEvent & pkt);
  48. protected:
  49. bool Decide (const LoggingEvent & pkt) const;
  50. protected:
  51. long m_SeriesNo;
  52. enLogLevel m_Threshold = enLogLevel::enUndefined;
  53. bool m_bClosed = true;
  54. TLogString m_Name;
  55. TLogString m_Type;
  56. TLogString m_Header;
  57. TLogString m_Footer;
  58. std::shared_ptr <Layout> m_Layout;
  59. std::list <std::shared_ptr <Filter>> m_arFilter;
  60. };
  61. }