|
|
|
|
#pragma once
|
|
|
|
|
#include "spdlog/spdlog.h"
|
|
|
|
|
#include "spdlog/async_logger.h"
|
|
|
|
|
#include "spdlog/sinks/stdout_color_sinks.h"
|
|
|
|
|
#include "spdlog/sinks/basic_file_sink.h"
|
|
|
|
|
#include "spdlog/sinks/rotating_file_sink.h"
|
|
|
|
|
#include "spdlog/details/thread_pool.h"
|
|
|
|
|
#include "spdlog/details/thread_pool-inl.h"
|
|
|
|
|
#include "spdlog/sinks/daily_file_sink.h"
|
|
|
|
|
#include "spdlog/async.h" //support for async logging
|
|
|
|
|
|
|
|
|
|
//<2F><>־<EFBFBD><D6BE><EFBFBD><EFBFBD>
|
|
|
|
|
#define LOG_NAME "multi_sink"
|
|
|
|
|
//<2F><>װ<EFBFBD>꣬û<EAA3AC>иú<D0B8><C3BA><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>кŵ<D0BA><C5B5><EFBFBD>Ϣ
|
|
|
|
|
#define LOG_TRACE(...) SPDLOG_LOGGER_CALL(spdlog::get(LOG_NAME), spdlog::level::trace, __VA_ARGS__)
|
|
|
|
|
#define LOG_DEBUG(...) SPDLOG_LOGGER_CALL(spdlog::get(LOG_NAME), spdlog::level::debug, __VA_ARGS__)
|
|
|
|
|
#define LOG_INFO(...) SPDLOG_LOGGER_CALL(spdlog::get(LOG_NAME), spdlog::level::info, __VA_ARGS__)
|
|
|
|
|
#define LOG_WARN(...) SPDLOG_LOGGER_CALL(spdlog::get(LOG_NAME), spdlog::level::warn, __VA_ARGS__)
|
|
|
|
|
#define LOG_ERROR(...) SPDLOG_LOGGER_CALL(spdlog::get(LOG_NAME), spdlog::level::err, __VA_ARGS__)
|
|
|
|
|
#define LOG_CRITI(...) SPDLOG_LOGGER_CALL(spdlog::get(LOG_NAME), spdlog::level::critical, __VA_ARGS__)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ML_Log
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
//<2F><>־<EFBFBD><D6BE><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
enum OutPosition {
|
|
|
|
|
CONSOLE = 0x01, //<2F><><EFBFBD><EFBFBD>̨
|
|
|
|
|
FILE = 0X02, //<2F>ļ<EFBFBD>
|
|
|
|
|
CONSOLE_AND_FILE = 0x03, //<2F><><EFBFBD><EFBFBD>̨+<2B>ļ<EFBFBD>
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum OutMode {
|
|
|
|
|
SYNC, //ͬ<><CDAC>ģʽ
|
|
|
|
|
ASYNC, //<2F>첽ģʽ
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//<2F><>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>
|
|
|
|
|
enum OutLevel {
|
|
|
|
|
LEVEL_TRACE = 0,
|
|
|
|
|
LEVEL_DEBUG = 1,
|
|
|
|
|
LEVEL_INFO = 2,
|
|
|
|
|
LEVEL_WARN = 3,
|
|
|
|
|
LEVEL_ERROR = 4,
|
|
|
|
|
LEVEL_CRITI = 5,
|
|
|
|
|
LEVEL_OFF = 6,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
ML_Log();
|
|
|
|
|
~ML_Log();
|
|
|
|
|
|
|
|
|
|
/* func: <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>־ͨ<D6BE><CDA8>
|
|
|
|
|
* @para[in] nFileName : <EFBFBD><EFBFBD>־<EFBFBD>洢·<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD>;<EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @para[in] nMaxFileSize : <EFBFBD><EFBFBD>־<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><EFBFBD>С <EFBFBD><EFBFBD>Ĭ<EFBFBD><EFBFBD>1024*1024*10<EFBFBD><EFBFBD>
|
|
|
|
|
* @para[in] nMaxFile : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><EFBFBD><EFBFBD>ٸ<EFBFBD><EFBFBD><EFBFBD>־<EFBFBD>ļ<EFBFBD> <EFBFBD><EFBFBD>Ĭ<EFBFBD><EFBFBD>10<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>ѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD>
|
|
|
|
|
* @para[in] outMode : <EFBFBD><EFBFBD>־<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ <EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>첽<EFBFBD><EFBFBD>
|
|
|
|
|
* @para[in] outPos : <EFBFBD><EFBFBD>־<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨+<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @para[in] outLevel : <EFBFBD><EFBFBD>־<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD> <EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>>=<EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
bool Init(const char* nFileName, const int nMaxFileSize = 1024 * 1024 * 10, const int nMaxFile = 10,
|
|
|
|
|
const OutMode outMode = SYNC, const OutPosition outPos = CONSOLE_AND_FILE, const OutLevel outLevel = LEVEL_TRACE);
|
|
|
|
|
void UnInit();
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
std::shared_ptr<spdlog::logger> m_pLogger;
|
|
|
|
|
bool m_bInit;
|
|
|
|
|
};
|