plumageRender/base/logger.h

71 lines
2.0 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#pragma once
#define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_INFO //控制记录日志的级别
#include "spdlog/spdlog.h"
#include "spdlog/sinks/rotating_file_sink.h"
//以下宏spdlog已经定义 日志输出到控制台,包括打印文件名和行号
//SPDLOG_DEBUG(...)
//SPDLOG_INFO(...)
//SPDLOG_WARN(...)
//SPDLOG_ERROR(...)
//SPDLOG_CRITICAL(...)
//以下宏新定义, 日志输出到滚动日志文件,包括打印文件名和行号
// TODO:
// 重构以允许同一函数内多次调用
// 预计全部重写
// 解决目标logger多次调用时重定义
constexpr auto LOGGER_NAME = "rotating render log";
constexpr auto LOGGER_SAVE_PATH = "logs/rotating.txt";
//滚动日志:信息
#define SPDLOG_INFO_FILE(...) \
auto logger0 = spdlog::get(LOGGER_NAME); \
if (nullptr == logger0) \
{ \
auto rotating_logger = spdlog::rotating_logger_mt(LOGGER_NAME, LOGGER_SAVE_PATH, 1048576 * 5, 3); \
SPDLOG_LOGGER_INFO(rotating_logger, __VA_ARGS__);\
} \
else \
{ \
SPDLOG_LOGGER_INFO(logger0, __VA_ARGS__); \
}
//滚动日志:警告
#define SPDLOG_WARN_FILE(...) \
SPDLOG_WARN(__VA_ARGS__);\
auto logger1 = spdlog::get(LOGGER_NAME); \
if (nullptr == logger1) \
{ \
auto rotating_logger = spdlog::rotating_logger_mt(LOGGER_NAME, LOGGER_SAVE_PATH, 1048576 * 5, 3); \
SPDLOG_LOGGER_WARN(rotating_logger, __VA_ARGS__);\
} \
else \
{ \
SPDLOG_LOGGER_WARN(logger1, __VA_ARGS__); \
}
//滚动日志:错误
#define SPDLOG_ERROR_FILE(...) \
SPDLOG_ERROR(__VA_ARGS__);\
auto logger2 = spdlog::get(LOGGER_NAME); \
if (nullptr == logger2) \
{ \
auto rotating_logger = spdlog::rotating_logger_mt(LOGGER_NAME, LOGGER_SAVE_PATH, 1048576 * 5, 3); \
SPDLOG_LOGGER_ERROR(rotating_logger, __VA_ARGS__);\
} \
else \
{ \
SPDLOG_LOGGER_ERROR(logger2, __VA_ARGS__); \
}
#define SPDLOG_CRITICAL_FILE(...) \
SPDLOG_CRITICAL(__VA_ARGS__);\
auto logger3 = spdlog::get(LOGGER_NAME); \
if (nullptr == logger3) \
{ \
auto rotating_logger = spdlog::rotating_logger_mt(LOGGER_NAME, LOGGER_SAVE_PATH, 1048576 * 5, 3); \
SPDLOG_LOGGER_CRITICAL(rotating_logger, __VA_ARGS__);\
} \
else \
{ \
SPDLOG_LOGGER_CRITICAL(logger3, __VA_ARGS__); \
}