From 59f1ec7be4fd81eb8b1bbb98119a08ed158e6def Mon Sep 17 00:00:00 2001 From: status102 <102887808+status102@users.noreply.github.com> Date: Sat, 8 Feb 2025 19:17:51 +0800 Subject: [PATCH] =?UTF-8?q?Revert=20"rft:=20=E4=BB=BB=E5=8A=A1=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E6=9C=9F=E9=97=B4Log=20Rotate=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=EF=BC=8C=E5=B9=B6=E4=B8=8A=E8=B0=83=E9=98=88?= =?UTF-8?q?=E5=80=BC=E8=87=B364MiB=20(#11670)"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit aa97deef9b7d749d4ccbfbb450c879b0d15829bd. Revert "fix: rotate_check 位置错误" This reverts commit d9856d96ff4299b717c1b872a64c3e7e7c513093. Revert "chore: 单独为肉鸽添加日志检查" This reverts commit 5f70c92f97917ec51be723f51023ab48d0adce82. Revert "chore: 移除过于消耗性能的检查" This reverts commit 8198017f9c41fedb9726067ef4a3789ef358f162. fix #11801 --- src/MaaCore/Assistant.cpp | 2 +- .../Roguelike/RoguelikeResetTaskPlugin.cpp | 1 - src/MaaCore/Utils/Logger.hpp | 35 +++++++++---------- 3 files changed, 17 insertions(+), 21 deletions(-) diff --git a/src/MaaCore/Assistant.cpp b/src/MaaCore/Assistant.cpp index 458cc993dd..901014964b 100644 --- a/src/MaaCore/Assistant.cpp +++ b/src/MaaCore/Assistant.cpp @@ -417,7 +417,7 @@ void Assistant::working_proc() finished_tasks.clear(); m_thread_idle = true; m_running = false; - Log.rotate_check(); + Log.flush(); m_condvar.wait(lock); continue; } diff --git a/src/MaaCore/Task/Roguelike/RoguelikeResetTaskPlugin.cpp b/src/MaaCore/Task/Roguelike/RoguelikeResetTaskPlugin.cpp index 6359763046..f083ab4060 100644 --- a/src/MaaCore/Task/Roguelike/RoguelikeResetTaskPlugin.cpp +++ b/src/MaaCore/Task/Roguelike/RoguelikeResetTaskPlugin.cpp @@ -28,7 +28,6 @@ bool asst::RoguelikeResetTaskPlugin::verify(AsstMsg msg, const json::value& deta bool asst::RoguelikeResetTaskPlugin::_run() { - Log.rotate_check(); for (const auto& plugin : m_task_ptr->get_plugins()) { if (auto ptr = std::dynamic_pointer_cast(plugin)) { ptr->reset_in_run_variables(); diff --git a/src/MaaCore/Utils/Logger.hpp b/src/MaaCore/Utils/Logger.hpp index 70c8df9eef..d0a5ff75a0 100644 --- a/src/MaaCore/Utils/Logger.hpp +++ b/src/MaaCore/Utils/Logger.hpp @@ -557,13 +557,7 @@ public: LogStream(std::unique_lock&&, stream_t&&, Args&&...) -> LogStream; public: - virtual ~Logger() override - { - std::unique_lock m_trace_lock(m_trace_mutex); - if (m_ofs.is_open()) { - m_ofs.close(); - } - } + virtual ~Logger() override { flush(false); } // static bool set_directory(const std::filesystem::path& dir) // { @@ -679,13 +673,15 @@ public: << ... << std::forward(args)); } - void rotate_check() + void flush(bool rorate_log_file = true) { - if (!m_ofs || !m_ofs.is_open() || m_ofs.tellp() <= MaxLogSize) { - return; + std::unique_lock m_trace_lock(m_trace_mutex); + if (m_ofs.is_open()) { + m_ofs.close(); + } + if (rorate_log_file) { + rotate(); } - std::unique_lock trace_lock(m_trace_mutex); - rotate(); } private: @@ -695,18 +691,20 @@ private: m_directory(UserDir.get()) { std::filesystem::create_directories(m_log_path.parent_path()); + rotate(); log_init_info(); } - void rotate() + void rotate() const { + constexpr uintmax_t MaxLogSize = 4ULL * 1024 * 1024; try { - if (!std::filesystem::exists(m_log_path) || !std::filesystem::is_regular_file(m_log_path)) { - return; + if (std::filesystem::exists(m_log_path) && std::filesystem::is_regular_file(m_log_path)) { + const uintmax_t log_size = std::filesystem::file_size(m_log_path); + if (log_size >= MaxLogSize) { + std::filesystem::rename(m_log_path, m_log_bak_path); + } } - m_ofs.close(); - std::filesystem::rename(m_log_path, m_log_bak_path); - m_ofs = std::ofstream(m_log_path, std::ios::out | std::ios::app); } catch (std::filesystem::filesystem_error& e) { std::cerr << e.what() << std::endl; @@ -733,7 +731,6 @@ private: std::filesystem::path m_log_bak_path = m_directory / "debug" / "asst.bak.log"; std::mutex m_trace_mutex; std::ofstream m_ofs; - const long long MaxLogSize = 64LL * 1024 * 1024; }; inline constexpr Logger::separator Logger::separator::none;