123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- #ifndef LHLOG_FILE_SINK_H
- #define LHLOG_FILE_SINK_H
- #include "spdlog/common.h"
- #include "spdlog/details/log_msg.h"
- #include "spdlog/details/synchronous_factory.h"
- #include "spdlog/sinks/base_sink.h"
- #include <array>
- #include "LHQLogAPI.h"
- #include <QString>
- #include <QDebug>
- namespace spdlog {
- namespace sinks {
- template<typename Mutex>
- class LHLog_file_sink : public base_sink<Mutex>
- {
- public:
-
- LHLog_file_sink(CLHQLogApi* lhLog, QString labName, QString strLogName) :
- m_lhLog(lhLog),
- m_libName(labName),
- m_strLogName(strLogName)
- {
- if(m_lhLog != nullptr)
- {
- m_lhLog->Load(labName);
- m_lhLog->DoInitial(strLogName);
- }
- }
- ~LHLog_file_sink() override = default;
- protected:
-
- void sink_it_(const details::log_msg &msg) override {
-
- level::level_enum msgLevel = msg.level;
-
- memory_buf_t formatted;
-
- base_sink<Mutex>::formatter_->format(msg, formatted);
-
- auto size = formatted.size();
-
- if(size >= 2 && ( formatted[size - 1] == '\n' ) && ( formatted[size - 2] == '\r') )
- {
- formatted.resize(size - 2);
- }
- else if(size >= 1 && (formatted[size - 1] == '\n' || formatted[size - 1] == '\r'))
- {
- formatted.resize(size - 1);
- }
-
- formatted.push_back('\0');
-
-
- const string_view_t str = string_view_t(formatted.data(), formatted.size());
-
-
- if(msgLevel == level::trace) {
-
-
- }
- else if (msgLevel == level::debug) {
- m_lhLog->DoWriteLogEx(m_strLogName, ELT_Log_Debug, str.data());
- }
- else if (msgLevel == level::info) {
- m_lhLog->DoWriteLogEx(m_strLogName, ELT_Log_Common, str.data());
- }
- else if(msgLevel == level::warn) {
- m_lhLog->DoWriteLogEx(m_strLogName, ELT_Log_Error, str.data());
- }
- else if (msgLevel == level::err) {
- m_lhLog->DoWriteLogEx(m_strLogName, ELT_Log_Error, str.data());
- }
- else if(msgLevel == level::critical) {
-
-
- }else if (msgLevel == level::off) {
-
-
- }
-
-
-
- }
- void flush_() override {}
- private:
- CLHQLogApi* m_lhLog = nullptr;
- QString m_strLogName;
- QString m_libName;
- };
- using LHLog_file_sink_mt = LHLog_file_sink<std::mutex>;
- using LHLog_file_sink_st = LHLog_file_sink<details::null_mutex>;
- }
- }
- #endif
|