use spdlog
This commit is contained in:
parent
2e34b4030a
commit
30bcb28575
@ -13,10 +13,71 @@
|
||||
#include "settings.hpp"
|
||||
#include "show_cmd.hpp"
|
||||
#include "usage_cmd.hpp"
|
||||
#include "utils/common.hpp"
|
||||
#include "utils/file.hpp"
|
||||
#include "utils/path.hpp"
|
||||
#include "utils/unix.hpp"
|
||||
#include "utils/windows.hpp"
|
||||
|
||||
using namespace monitarr;
|
||||
|
||||
static constexpr const std::uint8_t MAX_LOG_FILES{5U};
|
||||
static constexpr const std::uint64_t MAX_LOG_FILE_SIZE{
|
||||
1024ULL * 1024ULL * 5ULL,
|
||||
};
|
||||
|
||||
struct monitarr_exception_handler final
|
||||
: public utils::error::i_exception_handler {
|
||||
void handle_debug(std::string_view function_name,
|
||||
std::string_view msg) const override {
|
||||
spdlog::get("file")->debug(
|
||||
utils::error::create_error_message(function_name, {msg}));
|
||||
}
|
||||
|
||||
void handle_error(std::string_view function_name,
|
||||
std::string_view msg) const override {
|
||||
spdlog::get("file")->error(
|
||||
utils::error::create_error_message(function_name, {msg}));
|
||||
}
|
||||
|
||||
void handle_exception(std::string_view function_name) const override {
|
||||
spdlog::get("file")->error(utils::error::create_error_message(
|
||||
function_name, {
|
||||
"exception",
|
||||
"unknown exception",
|
||||
}));
|
||||
}
|
||||
|
||||
void handle_exception(std::string_view function_name,
|
||||
const std::exception &ex) const override {
|
||||
spdlog::get("file")->error(utils::error::create_error_message(
|
||||
function_name, {
|
||||
"exception",
|
||||
(ex.what() == nullptr ? "unknown" : ex.what()),
|
||||
}));
|
||||
}
|
||||
|
||||
void handle_info(std::string_view function_name,
|
||||
std::string_view msg) const override {
|
||||
spdlog::get("file")->info(
|
||||
utils::error::create_error_message(function_name, {msg}));
|
||||
}
|
||||
|
||||
void handle_trace(std::string_view function_name,
|
||||
std::string_view msg) const override {
|
||||
spdlog::get("file")->trace(
|
||||
utils::error::create_error_message(function_name, {msg}));
|
||||
}
|
||||
|
||||
void handle_warn(std::string_view function_name,
|
||||
std::string_view msg) const override {
|
||||
spdlog::get("file")->warn(
|
||||
utils::error::create_error_message(function_name, {msg}));
|
||||
}
|
||||
};
|
||||
|
||||
static const monitarr_exception_handler handler{};
|
||||
|
||||
auto main(int argc, char **argv) -> int {
|
||||
MONITARR_USES_FUNCTION_NAME();
|
||||
|
||||
@ -27,9 +88,28 @@ auto main(int argc, char **argv) -> int {
|
||||
if (not utils::file::change_to_process_directory()) {
|
||||
utils::error::handle_error(function_name,
|
||||
"failed to change to process directory");
|
||||
return 1;
|
||||
return -1;
|
||||
}
|
||||
|
||||
auto log_dir = utils::get_environment_variable("MONITARR_LOG_DIR");
|
||||
if (log_dir.empty()) {
|
||||
log_dir = utils::path::combine(".", {"logs"});
|
||||
}
|
||||
|
||||
if (not utils::file::directory{log_dir}.create_directory()) {
|
||||
utils::error::handle_error(
|
||||
function_name, fmt::format("failed to create log dir|{}|{}", log_dir,
|
||||
utils::get_last_error_code()));
|
||||
return -1;
|
||||
}
|
||||
|
||||
spdlog::drop("file");
|
||||
spdlog::create_async<spdlog::sinks::rotating_file_sink_mt>(
|
||||
"file", utils::path::combine(log_dir, {"monitarr.log"}),
|
||||
MAX_LOG_FILE_SIZE, MAX_LOG_FILES);
|
||||
|
||||
utils::error::set_exception_handler(&handler);
|
||||
|
||||
if (not monitarr::project_initialize()) {
|
||||
return -1;
|
||||
}
|
||||
@ -71,5 +151,7 @@ auto main(int argc, char **argv) -> int {
|
||||
}
|
||||
|
||||
monitarr::project_cleanup();
|
||||
|
||||
utils::error::set_exception_handler(nullptr);
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user