123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- #pragma once
- #include "backend.h"
- #include "element.h"
- #include "priority.h"
- #include "record.h"
- #include "thread.h"
- #include <util/generic/fwd.h>
- #include <util/generic/ptr.h>
- #include <functional>
- #include <cstdarg>
- using TLogFormatter = std::function<TString(ELogPriority priority, TStringBuf)>;
- class TLog {
- public:
-
- TLog();
-
- TLog(const TString& fname, ELogPriority priority = LOG_MAX_PRIORITY);
-
- TLog(THolder<TLogBackend> backend);
- TLog(const TLog&);
- TLog(TLog&&);
- ~TLog();
- TLog& operator=(const TLog&);
- TLog& operator=(TLog&&);
-
-
- void ResetBackend(THolder<TLogBackend> backend) noexcept;
-
-
- THolder<TLogBackend> ReleaseBackend() noexcept;
-
-
- bool IsNullLog() const noexcept;
- bool IsNotNullLog() const noexcept {
- return !IsNullLog();
- }
-
-
-
-
-
- void Write(ELogPriority priority, TStringBuf message, TLogRecord::TMetaFlags metaFlags = {}) const;
-
- void Write(const char* data, size_t len, TLogRecord::TMetaFlags metaFlags = {}) const;
-
- void Write(ELogPriority priority, const char* data, size_t len, TLogRecord::TMetaFlags metaFlags = {}) const;
-
- void Y_PRINTF_FORMAT(3, 4) AddLog(ELogPriority priority, const char* format, ...) const;
-
- void Y_PRINTF_FORMAT(2, 3) AddLog(const char* format, ...) const;
-
- void ReopenLog();
-
- void ReopenLogNoFlush();
-
- size_t BackEndQueueSize() const;
-
-
- void SetDefaultPriority(ELogPriority priority) noexcept;
-
- ELogPriority DefaultPriority() const noexcept;
-
- ELogPriority FiltrationLevel() const noexcept;
-
- void SetFormatter(TLogFormatter formatter) noexcept;
- template <class T>
- inline TLogElement operator<<(const T& t) const {
- TLogElement ret(this);
- ret << t;
- return ret;
- }
- public:
-
-
- bool OpenLog(const char* path, ELogPriority lp = LOG_MAX_PRIORITY);
- bool IsOpen() const noexcept;
- void AddLogVAList(const char* format, va_list lst);
- void CloseLog();
- private:
- class TImpl;
- TIntrusivePtr<TImpl> Impl_;
- TLogFormatter Formatter_;
- };
- THolder<TLogBackend> CreateLogBackend(const TString& fname, ELogPriority priority = LOG_MAX_PRIORITY, bool threaded = false);
- THolder<TLogBackend> CreateFilteredOwningThreadedLogBackend(const TString& fname, ELogPriority priority = LOG_MAX_PRIORITY, size_t queueLen = 0);
- THolder<TOwningThreadedLogBackend> CreateOwningThreadedLogBackend(const TString& fname, size_t queueLen = 0);
|