71 lines
2.7 KiB
C++
71 lines
2.7 KiB
C++
#pragma once
|
||
|
||
#include "GdCPP_Exports.h"
|
||
|
||
#include <filesystem>
|
||
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<spdlog::logger> 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<spdlog::logger>& 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<spdlog::logger>& 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<spdlog::logger>& 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();
|