From 121c515a07b2dc5399f819888922474f64a318da Mon Sep 17 00:00:00 2001 From: XMRig Date: Tue, 1 Dec 2020 23:28:07 +0700 Subject: [PATCH] Update log. --- src/base/io/log/Log.cpp | 50 +++++++++++++----------- src/base/io/log/Log.h | 16 +++----- src/base/io/log/backends/ConsoleLog.cpp | 21 ++++------ src/base/io/log/backends/ConsoleLog.h | 14 ++----- src/base/io/log/backends/FileLog.cpp | 14 ++----- src/base/io/log/backends/FileLog.h | 14 ++----- src/base/io/log/backends/SysLog.cpp | 14 ++----- src/base/io/log/backends/SysLog.h | 16 +++----- src/base/kernel/Base.cpp | 1 + src/base/kernel/config/Title.cpp | 4 +- src/base/kernel/config/Title.h | 4 +- src/base/kernel/interfaces/ILogBackend.h | 25 ++++++------ 12 files changed, 79 insertions(+), 114 deletions(-) diff --git a/src/base/io/log/Log.cpp b/src/base/io/log/Log.cpp index 2c2b2d14..e144858a 100644 --- a/src/base/io/log/Log.cpp +++ b/src/base/io/log/Log.cpp @@ -1,13 +1,7 @@ /* XMRig - * Copyright 2010 Jeff Garzik - * Copyright 2012-2014 pooler - * Copyright 2014 Lucas Jones - * Copyright 2014-2016 Wolf9466 - * Copyright 2016 Jay D Dee - * Copyright 2017-2018 XMR-Stak , - * Copyright 2019 Spudz76 - * Copyright 2018-2020 SChernykh - * Copyright 2016-2020 XMRig , + * Copyright (c) 2019 Spudz76 + * Copyright (c) 2018-2020 SChernykh + * Copyright (c) 2016-2020 XMRig , * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -31,6 +25,7 @@ #include +#include #include #include #include @@ -76,7 +71,7 @@ public: inline ~LogPrivate() { - for (ILogBackend *backend : m_backends) { + for (auto backend : m_backends) { delete backend; } } @@ -96,7 +91,7 @@ public: return; } - timestamp(level, size, offset); + const uint64_t ts = timestamp(level, size, offset); color(level, size); const int rc = vsnprintf(m_buf + size, sizeof (m_buf) - offset - 32, fmt, args); @@ -114,9 +109,9 @@ public: } if (!m_backends.empty()) { - for (ILogBackend *backend : m_backends) { - backend->print(level, m_buf, offset, size, true); - backend->print(level, txt.c_str(), offset ? (offset - 11) : 0, txt.size(), false); + for (auto backend : m_backends) { + backend->print(ts, level, m_buf, offset, size, true); + backend->print(ts, level, txt.c_str(), offset ? (offset - 11) : 0, txt.size(), false); } } else { @@ -127,14 +122,15 @@ public: private: - inline void timestamp(Log::Level level, size_t &size, size_t &offset) + inline uint64_t timestamp(Log::Level level, size_t &size, size_t &offset) { + const uint64_t ms = Chrono::currentMSecsSinceEpoch(); + if (level == Log::NONE) { - return; + return ms; } - const uint64_t ms = Chrono::currentMSecsSinceEpoch(); - time_t now = ms / 1000; + time_t now = ms / 1000; tm stime{}; # ifdef _WIN32 @@ -156,6 +152,8 @@ private: if (rc > 0) { size = offset = static_cast(rc); } + + return ms; } @@ -195,10 +193,10 @@ private: }; -bool Log::m_background = false; -bool Log::m_colors = true; -LogPrivate *Log::d = new LogPrivate(); -uint32_t Log::m_verbose = 0; +bool Log::m_background = false; +bool Log::m_colors = true; +LogPrivate *Log::d = nullptr; +uint32_t Log::m_verbose = 0; } /* namespace xmrig */ @@ -207,6 +205,8 @@ uint32_t Log::m_verbose = 0; void xmrig::Log::add(ILogBackend *backend) { + assert(d != nullptr); + if (d) { d->add(backend); } @@ -220,6 +220,12 @@ void xmrig::Log::destroy() } +void xmrig::Log::init() +{ + d = new LogPrivate(); +} + + void xmrig::Log::print(const char *fmt, ...) { if (!d) { diff --git a/src/base/io/log/Log.h b/src/base/io/log/Log.h index 73d4e53f..6da2e892 100644 --- a/src/base/io/log/Log.h +++ b/src/base/io/log/Log.h @@ -1,13 +1,7 @@ /* XMRig - * Copyright 2010 Jeff Garzik - * Copyright 2012-2014 pooler - * Copyright 2014 Lucas Jones - * Copyright 2014-2016 Wolf9466 - * Copyright 2016 Jay D Dee - * Copyright 2017-2018 XMR-Stak , - * Copyright 2019 Spudz76 - * Copyright 2018-2020 SChernykh - * Copyright 2016-2020 XMRig , + * Copyright (c) 2019 Spudz76 + * Copyright (c) 2018-2020 SChernykh + * Copyright (c) 2016-2020 XMRig , * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -57,6 +51,7 @@ public: static void add(ILogBackend *backend); static void destroy(); + static void init(); static void print(const char *fmt, ...); static void print(Level level, const char *fmt, ...); @@ -71,9 +66,8 @@ public: private: static bool m_background; static bool m_colors; - static uint32_t m_verbose; - static LogPrivate *d; + static uint32_t m_verbose; }; diff --git a/src/base/io/log/backends/ConsoleLog.cpp b/src/base/io/log/backends/ConsoleLog.cpp index 29103a54..cc3081fd 100644 --- a/src/base/io/log/backends/ConsoleLog.cpp +++ b/src/base/io/log/backends/ConsoleLog.cpp @@ -1,13 +1,7 @@ /* XMRig - * Copyright 2010 Jeff Garzik - * Copyright 2012-2014 pooler - * Copyright 2014 Lucas Jones - * Copyright 2014-2016 Wolf9466 - * Copyright 2016 Jay D Dee - * Copyright 2017-2018 XMR-Stak , - * Copyright 2019 Spudz76 - * Copyright 2018-2020 SChernykh - * Copyright 2016-2020 XMRig , + * Copyright (c) 2019 Spudz76 + * Copyright (c) 2018-2020 SChernykh + * Copyright (c) 2016-2020 XMRig , * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,14 +18,13 @@ */ -#include - - #include "base/io/log/backends/ConsoleLog.h" #include "base/io/log/Log.h" #include "base/kernel/config/Title.h" #include "base/tools/Handle.h" -#include "version.h" + + +#include xmrig::ConsoleLog::ConsoleLog(const Title &title) @@ -75,7 +68,7 @@ xmrig::ConsoleLog::~ConsoleLog() } -void xmrig::ConsoleLog::print(int, const char *line, size_t, size_t size, bool colors) +void xmrig::ConsoleLog::print(uint64_t, int, const char *line, size_t, size_t size, bool colors) { if (!m_tty || Log::isColors() != colors) { return; diff --git a/src/base/io/log/backends/ConsoleLog.h b/src/base/io/log/backends/ConsoleLog.h index 7f365a15..01917763 100644 --- a/src/base/io/log/backends/ConsoleLog.h +++ b/src/base/io/log/backends/ConsoleLog.h @@ -1,13 +1,7 @@ /* XMRig - * Copyright 2010 Jeff Garzik - * Copyright 2012-2014 pooler - * Copyright 2014 Lucas Jones - * Copyright 2014-2016 Wolf9466 - * Copyright 2016 Jay D Dee - * Copyright 2017-2018 XMR-Stak , - * Copyright 2019 Spudz76 - * Copyright 2018-2020 SChernykh - * Copyright 2016-2020 XMRig , + * Copyright (c) 2019 Spudz76 + * Copyright (c) 2018-2020 SChernykh + * Copyright (c) 2016-2020 XMRig , * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -50,7 +44,7 @@ public: ~ConsoleLog() override; protected: - void print(int level, const char *line, size_t offset, size_t size, bool colors) override; + void print(uint64_t timestamp, int level, const char *line, size_t offset, size_t size, bool colors) override; private: bool isSupported() const; diff --git a/src/base/io/log/backends/FileLog.cpp b/src/base/io/log/backends/FileLog.cpp index 2d52d812..51e5b1f7 100644 --- a/src/base/io/log/backends/FileLog.cpp +++ b/src/base/io/log/backends/FileLog.cpp @@ -1,13 +1,7 @@ /* XMRig - * Copyright 2010 Jeff Garzik - * Copyright 2012-2014 pooler - * Copyright 2014 Lucas Jones - * Copyright 2014-2016 Wolf9466 - * Copyright 2016 Jay D Dee - * Copyright 2017-2018 XMR-Stak , - * Copyright 2019 Spudz76 - * Copyright 2018-2020 SChernykh - * Copyright 2016-2020 XMRig , + * Copyright (c) 2019 Spudz76 + * Copyright (c) 2018-2020 SChernykh + * Copyright (c) 2016-2020 XMRig , * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -37,7 +31,7 @@ xmrig::FileLog::FileLog(const char *fileName) : } -void xmrig::FileLog::print(int, const char *line, size_t, size_t size, bool colors) +void xmrig::FileLog::print(uint64_t, int, const char *line, size_t, size_t size, bool colors) { if (!m_writer.isOpen() || colors) { return; diff --git a/src/base/io/log/backends/FileLog.h b/src/base/io/log/backends/FileLog.h index 95e9881a..c52cefd9 100644 --- a/src/base/io/log/backends/FileLog.h +++ b/src/base/io/log/backends/FileLog.h @@ -1,13 +1,7 @@ /* XMRig - * Copyright 2010 Jeff Garzik - * Copyright 2012-2014 pooler - * Copyright 2014 Lucas Jones - * Copyright 2014-2016 Wolf9466 - * Copyright 2016 Jay D Dee - * Copyright 2017-2018 XMR-Stak , - * Copyright 2019 Spudz76 - * Copyright 2018-2020 SChernykh - * Copyright 2016-2020 XMRig , + * Copyright (c) 2019 Spudz76 + * Copyright (c) 2018-2020 SChernykh + * Copyright (c) 2016-2020 XMRig , * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -40,7 +34,7 @@ public: FileLog(const char *fileName); protected: - void print(int level, const char *line, size_t offset, size_t size, bool colors) override; + void print(uint64_t timestamp, int level, const char *line, size_t offset, size_t size, bool colors) override; private: FileLogWriter m_writer; diff --git a/src/base/io/log/backends/SysLog.cpp b/src/base/io/log/backends/SysLog.cpp index e66f2e35..bd333908 100644 --- a/src/base/io/log/backends/SysLog.cpp +++ b/src/base/io/log/backends/SysLog.cpp @@ -1,13 +1,7 @@ /* XMRig - * Copyright 2010 Jeff Garzik - * Copyright 2012-2014 pooler - * Copyright 2014 Lucas Jones - * Copyright 2014-2016 Wolf9466 - * Copyright 2016 Jay D Dee - * Copyright 2017-2018 XMR-Stak , - * Copyright 2019 Spudz76 - * Copyright 2018-2019 SChernykh - * Copyright 2016-2019 XMRig , + * Copyright (c) 2019 Spudz76 + * Copyright (c) 2018-2020 SChernykh + * Copyright (c) 2016-2020 XMRig , * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -43,7 +37,7 @@ xmrig::SysLog::~SysLog() } -void xmrig::SysLog::print(int level, const char *line, size_t offset, size_t, bool colors) +void xmrig::SysLog::print(uint64_t, int level, const char *line, size_t offset, size_t, bool colors) { if (colors) { return; diff --git a/src/base/io/log/backends/SysLog.h b/src/base/io/log/backends/SysLog.h index d131784b..447ad006 100644 --- a/src/base/io/log/backends/SysLog.h +++ b/src/base/io/log/backends/SysLog.h @@ -1,13 +1,7 @@ /* XMRig - * Copyright 2010 Jeff Garzik - * Copyright 2012-2014 pooler - * Copyright 2014 Lucas Jones - * Copyright 2014-2016 Wolf9466 - * Copyright 2016 Jay D Dee - * Copyright 2017-2018 XMR-Stak , - * Copyright 2019 Spudz76 - * Copyright 2018-2019 SChernykh - * Copyright 2016-2019 XMRig , + * Copyright (c) 2019 Spudz76 + * Copyright (c) 2018-2020 SChernykh + * Copyright (c) 2016-2020 XMRig , * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -36,11 +30,13 @@ namespace xmrig { class SysLog : public ILogBackend { public: + XMRIG_DISABLE_COPY_MOVE(SysLog) + SysLog(); ~SysLog() override; protected: - void print(int level, const char *line, size_t offset, size_t size, bool colors) override; + void print(uint64_t timestamp, int level, const char *line, size_t offset, size_t size, bool colors) override; }; diff --git a/src/base/kernel/Base.cpp b/src/base/kernel/Base.cpp index 1e5019ca..24736193 100644 --- a/src/base/kernel/Base.cpp +++ b/src/base/kernel/Base.cpp @@ -166,6 +166,7 @@ private: xmrig::Base::Base(Process *process) : d_ptr(new BasePrivate(process)) { + Log::init(); } diff --git a/src/base/kernel/config/Title.cpp b/src/base/kernel/config/Title.cpp index 1e9c3ce4..030aa727 100644 --- a/src/base/kernel/config/Title.cpp +++ b/src/base/kernel/config/Title.cpp @@ -1,6 +1,6 @@ /* XMRig - * Copyright 2018-2020 SChernykh - * Copyright 2016-2020 XMRig , + * Copyright (c) 2018-2020 SChernykh + * Copyright (c) 2016-2020 XMRig , * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/base/kernel/config/Title.h b/src/base/kernel/config/Title.h index 8cf73f28..452869dc 100644 --- a/src/base/kernel/config/Title.h +++ b/src/base/kernel/config/Title.h @@ -1,6 +1,6 @@ /* XMRig - * Copyright 2018-2020 SChernykh - * Copyright 2016-2020 XMRig , + * Copyright (c) 2018-2020 SChernykh + * Copyright (c) 2016-2020 XMRig , * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/src/base/kernel/interfaces/ILogBackend.h b/src/base/kernel/interfaces/ILogBackend.h index ef18da88..88137fd1 100644 --- a/src/base/kernel/interfaces/ILogBackend.h +++ b/src/base/kernel/interfaces/ILogBackend.h @@ -1,13 +1,6 @@ /* XMRig - * Copyright 2010 Jeff Garzik - * Copyright 2012-2014 pooler - * Copyright 2014 Lucas Jones - * Copyright 2014-2016 Wolf9466 - * Copyright 2016 Jay D Dee - * Copyright 2017-2018 XMR-Stak , - * Copyright 2019 Spudz76 - * Copyright 2018-2019 SChernykh - * Copyright 2016-2019 XMRig , + * Copyright (c) 2018-2020 SChernykh + * Copyright (c) 2016-2020 XMRig , * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -27,8 +20,11 @@ #define XMRIG_ILOGBACKEND_H -#include -#include +#include "base/tools/Object.h" + + +#include +#include namespace xmrig { @@ -37,9 +33,12 @@ namespace xmrig { class ILogBackend { public: - virtual ~ILogBackend() = default; + XMRIG_DISABLE_COPY_MOVE(ILogBackend) - virtual void print(int level, const char *line, size_t offset, size_t size, bool colors) = 0; + ILogBackend() = default; + virtual ~ILogBackend() = default; + + virtual void print(uint64_t timestamp, int level, const char *line, size_t offset, size_t size, bool colors) = 0; };