Utils/VrUtils/Inc/VrLog.h
杰仔 9bcdc61c5a 初始提交:Utils 工具库模块
包含以下子模块:
- VrCommon: 核心接口和数据结构
- VrUtils: 工具类库(JSON、log4cpp、tinyxml2、INI、MD5、CRC)
- CloudUtils: 点云工具
- DataUtils: 数据处理工具(CloudMathClac、CoordinateTransform)
- CloudView: 点云查看工具

功能说明:
- 提供项目通用的基础工具类和实用功能
- 支持 Windows (MSVC/MinGW) 和 Linux (ARM/x86_64) 平台
- 使用 Qt qmake 构建系统
- 所有模块编译为静态库
2026-02-18 16:00:16 +08:00

88 lines
2.5 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
#pragma comment(lib, "Shell32.lib") // VrLog 需要 SHGetFolderPathA
#endif // _WIN32
#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_WARN(...) 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();
/// 开启/关闭时间戳
VR_UTILS_API void EnableTime(bool bEnable);
/// 输出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