#pragma once #include #pragma warning (disable : 4251) #include "Log4CPP.Define.hpp" #include "Log4CPP.LoggingEvent.hpp" #include "Log4CPP.LogLevel.hpp" //----------------------------------------------------------------------------- // Appender //----------------------------------------------------------------------------- namespace Log4CPP { class Layout; class Filter; } namespace Log4CPP { class Log4CPP_API Appender { Appender (const Appender &) = delete; Appender (Appender &&) = delete; Appender & operator = (const Appender &) = delete; Appender & operator = (Appender &&) = delete; public: Appender (); virtual ~Appender () = 0; public: virtual bool Open (); virtual void Close (); bool IsClosed () const { return m_bClosed; } public: virtual void Append (LoggingEvent * pkt) = 0; public: void SetName (CV_String & Name); TLogString GetName () const; // m_Name TLogString GetType () const; // m_Type void SetThreshold (int value); int GetThreshold () const { return static_cast (m_Threshold); } public: virtual void SetLayout (LayoutPtr layout); virtual Layout * GetLayout (); virtual void AddFilter (FilterPtr filter); virtual void NewLine (int Level) {} virtual void SetOption (const TLogString & key, const TLogString & value); // 所有配置装载完毕后, 调用这个函数 virtual void ActivateOptions () {} public: TLogString Rendering (const LoggingEvent & pkt); protected: bool Decide (const LoggingEvent & pkt) const; protected: long m_SeriesNo; enLogLevel m_Threshold = enLogLevel::enUndefined; bool m_bClosed = true; TLogString m_Name; TLogString m_Type; TLogString m_Header; TLogString m_Footer; std::shared_ptr m_Layout; std::list > m_arFilter; }; }