Index: src/liblogger/TLogRecord.h =================================================================== diff -u -r12b36349f6214befeace08efa9acc7e03be0d847 -r7de00e54431d78b6c54fad6fb163dbc306381ef5 --- src/liblogger/TLogRecord.h (.../TLogRecord.h) (revision 12b36349f6214befeace08efa9acc7e03be0d847) +++ src/liblogger/TLogRecord.h (.../TLogRecord.h) (revision 7de00e54431d78b6c54fad6fb163dbc306381ef5) @@ -21,50 +21,70 @@ #include #include "TLogFileData.h" -#include -#include "TDateTimeFormatter.h" +#include +#include namespace logger { - // do not export! class TLogRecord : public std::wstringstream { public: + TLogRecord(const TLogFileDataPtr& spFileData, ESeverityLevel eLevel, const std::wstring& wstrChannel); TLogRecord(const TLogRecord&) = delete; - TLogRecord(TLogRecord&& rSrc) : - std::wstringstream(std::move(rSrc)), - m_spFileData(std::move(rSrc.m_spFileData)) - { - } + TLogRecord(TLogRecord&& rSrc); TLogRecord& operator=(const TLogRecord&) = delete; + TLogRecord& operator=(TLogRecord&&) = delete; - TLogRecord(const TLogFileDataPtr& spFileData, ESeverityLevel eLevel) : - m_spFileData(spFileData) - { - *this << TDateTimeFormatter::GetCurrentTime() << L" " << SeverityLevelToString(eLevel) << " "; - } + ~TLogRecord(); - ~TLogRecord() - { - *this << L"\r\n"; - m_spFileData->PushLogEntry(str()); - } + bool IsEnabled() const; + void Disable(); - bool IsEnabled() const - { - return m_bEnabled; - } - - void Disable() - { - m_bEnabled = false; - } - private: TLogFileDataPtr m_spFileData; bool m_bEnabled = true; }; + + inline TLogRecord::TLogRecord(TLogRecord&& rSrc) : + std::wstringstream(std::move(rSrc)), + m_spFileData(std::move(rSrc.m_spFileData)) + { + } + + inline TLogRecord::TLogRecord(const TLogFileDataPtr& spFileData, ESeverityLevel eLevel, const std::wstring& wstrChannel) : + m_spFileData(spFileData) + { + boost::posix_time::wtime_facet* facet = new boost::posix_time::wtime_facet(); + facet->format(L"%Y-%m-%d %H:%M:%S.%f"); + imbue(std::locale(std::locale::classic(), facet)); + *this << boost::posix_time::microsec_clock::local_time() << L" [" << SeverityLevelToString(eLevel) << L"] " << wstrChannel << L": "; + } + + inline TLogRecord::~TLogRecord() + { + *this << L"\r\n"; + m_spFileData->PushLogEntry(str()); + } + + inline bool TLogRecord::IsEnabled() const + { + return m_bEnabled; + } + + inline void TLogRecord::Disable() + { + m_bEnabled = false; + } } +#ifdef _MFC_VER + +inline std::wostream& operator<<(std::wostream &os, const CString& str) +{ + return os << (PCTSTR)str; +} + #endif + +#endif