fix logger stacktrase

This commit is contained in:
2025-10-28 07:57:46 +03:00
parent 503ea9fb44
commit 44f7c2246e
2 changed files with 31 additions and 20 deletions

View File

@@ -31,16 +31,17 @@ auto main(int argc, char *argv[]) -> int
for (int i = 0; i < 10; ++i) rb.put(i); for (int i = 0; i < 10; ++i) rb.put(i);
hack::log().set_devider(", "); hack::log().set_devider(", ");
hack::log().on_func();
hack::log()(1, i, 3.1f, f, 4.3, d, "asdf"); hack::log()(1, i, 3.1f, f, 4.3, d, "asdf");
hack::log().set_devider(" = "); hack::log().set_devider(" = ");
hack::log().on_full_path();
hack::log()(1, i, 3.1f, f, 4.3, d, "asdf"); hack::log()(1, i, 3.1f, f, 4.3, d, "asdf");
hack::log().reset(); hack::log().reset();
hack::log()(1, i, 3.1f, f, 4.3, d, "asdf"); hack::log()(1, i, 3.1f, f, 4.3, d, "asdf");
hack::log().set_devider(", "); hack::log().set_devider(", ");
hack::log().on_func(); hack::log().on_func();
hack::log().on_file(); hack::log().on_file(false);
hack::log().on_row(); hack::log().on_row(false);
hack::log()(vs); hack::log()(vs);
hack::log()(l); hack::log()(l);
hack::log()(df); hack::log()(df);
@@ -59,6 +60,7 @@ auto main(int argc, char *argv[]) -> int
hack::log().set_devider(", "); hack::log().set_devider(", ");
hack::log()(sti, 123, true); hack::log()(sti, 123, true);
hack::log().reset(); hack::log().reset();
hack::log().on_full_path();
hack::log()("log", 123, sti, false, 1.8f, vs); hack::log()("log", 123, sti, false, 1.8f, vs);
hack::warn()("warn"); hack::warn()("warn");

View File

@@ -22,16 +22,18 @@ namespace hack
public: public:
void set_location(std::source_location location) { m_location = location; } void set_location(std::source_location location) { m_location = location; }
void set_devider(std::string devider) { m_devider = devider; } void set_devider(std::string devider) { m_devider = devider; }
void on_file(bool v = false) { m_no_file = v; } void on_file(bool v = true) { m_on_file = v; }
void on_func(bool v = false) { m_no_func = v; }; void on_full_path(bool v = true) { m_on_full_path = v; }
void on_row(bool v = false) { m_no_row = v; } void on_func(bool v = true) { m_on_func = v; };
void on_info(bool v = false) { on_file(); on_func(); on_row(); } 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 bool_as_number(bool v = true) { m_bool_as_number = v; }
void reset() void reset()
{ {
m_no_file = m_base_config.m_no_file; m_on_file = m_base_config.m_on_file;
m_no_func = m_base_config.m_no_func; m_on_full_path = m_base_config.m_on_full_path;
m_no_row = m_base_config.m_no_row; 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_devider = m_base_config.m_devider;
m_bool_as_number = m_base_config.m_bool_as_number; m_bool_as_number = m_base_config.m_bool_as_number;
} }
@@ -54,9 +56,10 @@ namespace hack
// настройки по умолчанию // настройки по умолчанию
struct config struct config
{ {
bool m_no_file = true; // показывать/не показывать название файла/пути в выоде логов bool m_on_file = true; // показывать/не показывать название файла/пути в выоде логов
bool m_no_func = true; // показывать/не показывать название функции в выоде логов bool m_on_full_path = false; // показывать/не показывать название файла/пути в выоде логов
bool m_no_row = false; // показывать/не показывать номер строки в выоде логов bool m_on_func = false; // показывать/не показывать название функции в выоде логов
bool m_on_row = true; // показывать/не показывать номер строки в выоде логов
bool m_bool_as_number = false; // показывет bool как число или как текст (0, false); bool m_bool_as_number = false; // показывет bool как число или как текст (0, false);
std::string m_devider = " "; // разделитель по умолчанию std::string m_devider = " "; // разделитель по умолчанию
} m_base_config; } m_base_config;
@@ -85,13 +88,18 @@ namespace hack
break; break;
} }
if (!m_no_file) if (m_on_file)
{
if (m_on_full_path)
ss << utils::color::green << m_location.file_name() << ":" << utils::color::reset; 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; 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; ss << utils::color::bold << utils::color::blue << "[" << m_location.line() << "] " << utils::color::reset;
std::cout << ss.str(); std::cout << ss.str();
@@ -302,9 +310,10 @@ namespace hack
std::source_location m_location; std::source_location m_location;
std::size_t m_count = 0; std::size_t m_count = 0;
std::string m_devider = m_base_config.m_devider; std::string m_devider = m_base_config.m_devider;
bool m_no_func = m_base_config.m_no_func; bool m_on_func = m_base_config.m_on_func;
bool m_no_file = m_base_config.m_no_file; bool m_on_full_path = m_base_config.m_on_full_path;
bool m_no_row = m_base_config.m_no_row; 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; bool m_bool_as_number = m_base_config.m_bool_as_number;
}; };