MCPcopy Create free account
hub / github.com/MeisApps/pcbu-desktop / Init

Method Init

common/src/storage/LoggingSystem.cpp:12–51  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

10std::string LoggingSystem::g_LogName{};
11
12void LoggingSystem::Init(const std::string &logName, bool printToConsole) {
13 g_LogName = logName;
14 auto logPath = AppSettings::GetBaseDir() / fmt::format("{}.log", g_LogName);
15 std::ifstream logFile(logPath, std::ifstream::ate | std::ifstream::binary);
16 if(logFile) {
17 auto sizeKb = logFile.tellg() / 1000;
18 if(sizeKb > 5000)
19 Shell::RemoveFile(logPath);
20 }
21
22 try {
23 auto enableDebug = std::filesystem::exists(AppSettings::GetBaseDir() / "LOG_DEBUG");
24 auto fileSink = std::make_shared<spdlog::sinks::basic_file_sink_mt>(logPath.string(), false);
25 fileSink->set_level(enableDebug ? spdlog::level::debug : spdlog::level::info);
26
27 std::shared_ptr<spdlog::logger> loggerPtr{};
28 if(printToConsole) {
29 auto consoleSink = std::make_shared<spdlog::sinks::stdout_sink_mt>();
30 consoleSink->set_level(enableDebug ? spdlog::level::debug : spdlog::level::info);
31 auto logger = spdlog::logger("pcbu_logger", {consoleSink, fileSink});
32 loggerPtr = std::make_shared<spdlog::logger>(logger);
33 } else {
34 auto logger = spdlog::logger("pcbu_logger", {fileSink});
35 loggerPtr = std::make_shared<spdlog::logger>(logger);
36 }
37
38 loggerPtr->set_pattern("[%Y-%m-%d %H:%M:%S.%e] [%l] %v");
39 loggerPtr->set_level(spdlog::level::debug);
40 spdlog::set_default_logger(loggerPtr);
41#ifdef _DEBUG
42 spdlog::flush_on(spdlog::level::debug);
43#else
44 spdlog::flush_on(spdlog::level::info);
45#endif
46
47 spdlog::info("Logger init.");
48 } catch(const std::exception &ex) {
49 spdlog::error("Error initializing logger: {}", ex.what());
50 }
51}
52
53void LoggingSystem::Destroy() {
54 spdlog::info("Logger destroy.");

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected