GrabBag/VrUtils/Inc/VrLog.h

79 lines
2.3 KiB
C++
Raw 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.

#ifndef __VR_LOG__H_
#define __VR_LOG__H_
#include <stdio.h>
#include <chrono>
#ifdef _WIN32
#define VR_UTILS_API
#else
// Linux/Unixƽ̨
#ifdef VR_UTILS_EXPORTS
#define VR_UTILS_API __attribute__((visibility("default")))
#else
#define VR_UTILS_API __attribute__((visibility("default")))
#endif
#endif
#ifdef _WIN32
// windows:
#define logfilename(x) strrchr(x,'\\')?strrchr(x,'\\')+1:x
#else
// linux:
#define logfilename(x) strrchr(x,'/')?strrchr(x,'/')+1:x
#endif // _WIN32
#ifdef _WIN32
#pragma comment(lib, "advapi32.lib")
#endif
#define LOG_VERBOSE(...) VrLogUtils::EchoLog(KELOGLEVEL_Verbose, logfilename(__FILE__), __LINE__, "APPV", ##__VA_ARGS__)
#define LOG_DEBUG(...) VrLogUtils::EchoLog(KELOGLEVEL_Debug, logfilename(__FILE__), __LINE__, "APPD", ##__VA_ARGS__)
#define LOG_INFO(...) VrLogUtils::EchoLog(KELOGLEVEL_Info, logfilename(__FILE__), __LINE__, "APPI", ##__VA_ARGS__)
#define LOG_WARNING(...) VrLogUtils::EchoLog(KELOGLEVEL_Warning, logfilename(__FILE__), __LINE__, "APPW", ##__VA_ARGS__)
#define LOG_ERROR(...) VrLogUtils::EchoLog(KELOGLEVEL_Error, logfilename(__FILE__), __LINE__, "APPE", ##__VA_ARGS__)
#define LOG_ERRO(...) VrLogUtils::EchoLog(KELOGLEVEL_Error, logfilename(__FILE__), __LINE__, "APPE", ##__VA_ARGS__)
#define LOG_ERR(...) VrLogUtils::EchoLog(KELOGLEVEL_Error, logfilename(__FILE__), __LINE__, "APPE", ##__VA_ARGS__)
/// @brief
/// 日志等级
enum VrLogLevel
{
KELOGLEVEL_None = 0,
KELOGLEVEL_Verbose = 1,
KELOGLEVEL_Debug,
KELOGLEVEL_Info,
KELOGLEVEL_Warning,
KELOGLEVEL_Error,
};
enum VrLogType
{
KELOGTYPE_None = 0,
KELOGTYPE_Console = 1,
KELOGTYPE_Log4Cpp = 1 << 1,
KELOGTYPE_All = 0xff,
};
namespace VrLogUtils
{
/// 初始化log
VR_UTILS_API void InitLog();
/// 关闭log
VR_UTILS_API void UninitLog();
/// 输出log
VR_UTILS_API void EchoLog(VrLogLevel eLogLevel, const char* sFilePath, const int nLine, const char* sLogGroup, const char* sFormat, ...);
/// 修改log level default info
VR_UTILS_API void AlterLogLevel(VrLogLevel eLogLevel);
/// 修改log输出形式 默认都输出
VR_UTILS_API void AlterLogType(VrLogType eLogType);
};
#endif