包含以下子模块: - VrCommon: 核心接口和数据结构 - VrUtils: 工具类库(JSON、log4cpp、tinyxml2、INI、MD5、CRC) - CloudUtils: 点云工具 - DataUtils: 数据处理工具(CloudMathClac、CoordinateTransform) - CloudView: 点云查看工具 功能说明: - 提供项目通用的基础工具类和实用功能 - 支持 Windows (MSVC/MinGW) 和 Linux (ARM/x86_64) 平台 - 使用 Qt qmake 构建系统 - 所有模块编译为静态库
88 lines
2.5 KiB
C++
88 lines
2.5 KiB
C++
#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
|
||
|