Files
GdCpp12/include/aLog.h

71 lines
2.7 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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()启动的logconsole可以中途打开、关闭。
// aLogInitConsole()启动的log也可以但没有必要
GDCPP_API void closeConsoleLog();
// 如果没开启Console log打开
// aLogInit()启动的logconsole可以中途打开、关闭。
// aLogInitConsole()启动的log也可以但没有必要
GDCPP_API void openConsoleLog();