Index: src/common/TMultiFileBackend.h =================================================================== diff -u -N -r205f3bfeed0082edb35430a9a0968699e5cc7fea -r62d767936f1675e1db51174f53c91484fe691937 --- src/common/TMultiFileBackend.h (.../TMultiFileBackend.h) (revision 205f3bfeed0082edb35430a9a0968699e5cc7fea) +++ src/common/TMultiFileBackend.h (.../TMultiFileBackend.h) (revision 62d767936f1675e1db51174f53c91484fe691937) @@ -20,22 +20,40 @@ #define __TMULTIFILEBACKEND_H__ #include +#include "../libchcore/TAutoHandles.h" +#include "../libchcore/ITimestampProvider.h" +#include "../libchcore/TPath.h" +#include "TLogSink.h" +#include "TLogSinkCollection.h" +#include "TLogRotator.h" namespace chcore { - class TMultiFileBackend : public boost::log::sinks::basic_formatted_sink_backend< char > + class TMultiFileBackend : public boost::log::sinks::basic_formatted_sink_backend { public: - TMultiFileBackend(); + const unsigned int MaxHandleCacheTime = 60000; - void consume(boost::log::record_view const& rec, string_type const& formatted_message); + public: + TMultiFileBackend(ITimestampProviderPtr spTimestampProvider, unsigned int uiMaxRotatedFiles, unsigned long long ullMaxLogSize); + void Init(const TSmartPath& pathDirectory, unsigned int uiMaxRotatedFiles, unsigned long long ullMaxLogSize); + + void consume(const boost::log::record_view& rec, const string_type& formatted_message); + private: - unsigned long long m_ullRotateSize; - unsigned int m_uiMaxRotatedFiles; - unsigned int m_uiHandleCacheTime; + void SetDirectory(const TSmartPath& pathDirectory); - // map>> + static TSmartPath GetLogName(const boost::log::record_view &rec); + HANDLE GetLogFile(const TSmartPath& pathLog, TLogSink& sinkData, size_t stRequiredSpace); + + private: + unsigned int m_uiHandleCacheTime = MaxHandleCacheTime; + + TLogSinkCollection m_mapLogs; + TLogRotator m_logRotator; + ITimestampProviderPtr m_spTimestampProvider; + bool m_bInitialized = false; }; }