#pragma once #include "GdCPP_Exports.h" #include namespace fs = std::filesystem; #include "spdlog/spdlog.h" #include "spdlog/fmt/chrono.h" // support for user defined types #include "spdlog/fmt/fmt.h" #include "spdlog/fmt/ostr.h" // support for user defined types #include "spdlog/fmt/xchar.h" #include "spdlog/fmt/bundled/printf.h" // aLogInit() 初始化时的flag枚举 enum eLogFlag { // 初始化时是否开启console log。 // 调用aLogInit()文件log是必须的,console log是可选的 // 如果只开console log,调用aLogInitConsole()即可 INIT_CONSOLE_LOG = 1 << 0, // 是否单独开一个error和warning的log文件。 // 默认不开启。 INIT_ERROR_FILE_LOG = 1 << 1, // 文件log是否滚动存储 // 不设置(默认):每次启动时,都重新创建一个新的log文件,文件名添加时间戳以区分。 // 设置了,aLogInit()的logfilesize_M设置单个文件大小,logfilenum设置最多文件数 INIT_ROLL_FILE_LOG = (1<<2) }; //app全局通用的logger实例 GDCPP_API extern std::shared_ptr alog; GDCPP_API extern spdlog::sink_ptr pConsoleSink; GDCPP_API extern spdlog::sink_ptr pFileSink; GDCPP_API extern spdlog::sink_ptr pFileSink2; // 初始化文件 + Console logger。其中文件logger是必选,Console可选 GDCPP_API void InitRollFileLog(std::shared_ptr& log, const char* logname, int flag, const fs::path & logdir, const std::wstring & filename, int logfilesize_K, int logfilenum = 16); inline void aLogInitRollFileLog(int flag, const fs::path& logdir, const std::wstring& filename, int logfilesize_K, int logfilenum = 16) { InitRollFileLog(alog, "", flag, logdir, filename, logfilesize_K, logfilenum); } GDCPP_API void InitBasicFileLog(std::shared_ptr& log, const char* logname, int flag, const fs::path& logdir, const std::wstring& filename); inline void aLogInitBasicFileLog(int flag, const fs::path& logdir, const std::wstring& filename) { InitBasicFileLog(alog, "", flag, logdir, filename); } // 仅开Console log GDCPP_API void aLogInitConsole(); // 关闭log // aLogInit()、aLogInitConsole()初始化的资源,都在这里释放 GDCPP_API void LogDeinit(std::shared_ptr& log, bool byelog=true); inline void aLogDeinit(bool byelog = true) { LogDeinit(alog, byelog); } // 如果已经打开了Console Log,关闭掉 // aLogInit()启动的log,console可以中途打开、关闭。 // aLogInitConsole()启动的log也可以,但没有必要 GDCPP_API void closeConsoleLog(); // 如果没开启Console log,打开 // aLogInit()启动的log,console可以中途打开、关闭。 // aLogInitConsole()启动的log也可以,但没有必要 GDCPP_API void openConsoleLog();