From 44f7c2246e2e325c0c5905dfe2f4a17979d58047 Mon Sep 17 00:00:00 2001 From: chatlanin Date: Tue, 28 Oct 2025 07:57:46 +0300 Subject: [PATCH] fix logger stacktrase --- bin/examples/logger/main.cpp | 8 ++++--- src/hack/logger/logger.hpp | 43 ++++++++++++++++++++++-------------- 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/bin/examples/logger/main.cpp b/bin/examples/logger/main.cpp index 5ec5bf8..ae48e9e 100644 --- a/bin/examples/logger/main.cpp +++ b/bin/examples/logger/main.cpp @@ -31,16 +31,17 @@ auto main(int argc, char *argv[]) -> int for (int i = 0; i < 10; ++i) rb.put(i); hack::log().set_devider(", "); - hack::log().on_func(); hack::log()(1, i, 3.1f, f, 4.3, d, "asdf"); + hack::log().set_devider(" = "); + hack::log().on_full_path(); hack::log()(1, i, 3.1f, f, 4.3, d, "asdf"); hack::log().reset(); hack::log()(1, i, 3.1f, f, 4.3, d, "asdf"); hack::log().set_devider(", "); hack::log().on_func(); - hack::log().on_file(); - hack::log().on_row(); + hack::log().on_file(false); + hack::log().on_row(false); hack::log()(vs); hack::log()(l); hack::log()(df); @@ -59,6 +60,7 @@ auto main(int argc, char *argv[]) -> int hack::log().set_devider(", "); hack::log()(sti, 123, true); hack::log().reset(); + hack::log().on_full_path(); hack::log()("log", 123, sti, false, 1.8f, vs); hack::warn()("warn"); diff --git a/src/hack/logger/logger.hpp b/src/hack/logger/logger.hpp index 7c89147..7629fad 100755 --- a/src/hack/logger/logger.hpp +++ b/src/hack/logger/logger.hpp @@ -22,16 +22,18 @@ namespace hack public: void set_location(std::source_location location) { m_location = location; } void set_devider(std::string devider) { m_devider = devider; } - void on_file(bool v = false) { m_no_file = v; } - void on_func(bool v = false) { m_no_func = v; }; - void on_row(bool v = false) { m_no_row = v; } - void on_info(bool v = false) { on_file(); on_func(); on_row(); } + void on_file(bool v = true) { m_on_file = v; } + void on_full_path(bool v = true) { m_on_full_path = v; } + void on_func(bool v = true) { m_on_func = v; }; + void on_row(bool v = true) { m_on_row = v; } + void on_info() { on_file(); on_func(); on_row(); on_full_path(); } void bool_as_number(bool v = true) { m_bool_as_number = v; } void reset() { - m_no_file = m_base_config.m_no_file; - m_no_func = m_base_config.m_no_func; - m_no_row = m_base_config.m_no_row; + m_on_file = m_base_config.m_on_file; + m_on_full_path = m_base_config.m_on_full_path; + m_on_func = m_base_config.m_on_func; + m_on_row = m_base_config.m_on_row; m_devider = m_base_config.m_devider; m_bool_as_number = m_base_config.m_bool_as_number; } @@ -54,9 +56,10 @@ namespace hack // настройки по умолчанию struct config { - bool m_no_file = true; // показывать/не показывать название файла/пути в выоде логов - bool m_no_func = true; // показывать/не показывать название функции в выоде логов - bool m_no_row = false; // показывать/не показывать номер строки в выоде логов + bool m_on_file = true; // показывать/не показывать название файла/пути в выоде логов + bool m_on_full_path = false; // показывать/не показывать название файла/пути в выоде логов + bool m_on_func = false; // показывать/не показывать название функции в выоде логов + bool m_on_row = true; // показывать/не показывать номер строки в выоде логов bool m_bool_as_number = false; // показывет bool как число или как текст (0, false); std::string m_devider = " "; // разделитель по умолчанию } m_base_config; @@ -85,13 +88,18 @@ namespace hack break; } - if (!m_no_file) - ss << utils::color::green << m_location.file_name() << ":" << utils::color::reset; + if (m_on_file) + { + if (m_on_full_path) + ss << utils::color::green << m_location.file_name() << ":" << utils::color::reset; + else + ss << utils::color::green << std::filesystem::path{ m_location.file_name() }.filename().string() << ":" << utils::color::reset; + } - if (!m_no_func) + if (m_on_func) ss << utils::color::italic << utils::color::yellow<< m_location.function_name() << utils::color::reset; - if (!m_no_row) + if (m_on_row) ss << utils::color::bold << utils::color::blue << "[" << m_location.line() << "] " << utils::color::reset; std::cout << ss.str(); @@ -302,9 +310,10 @@ namespace hack std::source_location m_location; std::size_t m_count = 0; std::string m_devider = m_base_config.m_devider; - bool m_no_func = m_base_config.m_no_func; - bool m_no_file = m_base_config.m_no_file; - bool m_no_row = m_base_config.m_no_row; + bool m_on_func = m_base_config.m_on_func; + bool m_on_full_path = m_base_config.m_on_full_path; + bool m_on_file = m_base_config.m_on_file; + bool m_on_row = m_base_config.m_on_row; bool m_bool_as_number = m_base_config.m_bool_as_number; };