增加Log通用部分代码
This commit is contained in:
63
inc/hgl/log/LogInfo.h
Normal file
63
inc/hgl/log/LogInfo.h
Normal file
@@ -0,0 +1,63 @@
|
||||
#ifndef HGL_LOGINFO_INCLUDE
|
||||
#define HGL_LOGINFO_INCLUDE
|
||||
|
||||
#include<iostream>
|
||||
#include<hgl/CodePage.h>
|
||||
|
||||
#if (HGL_COMPILER == HGL_COMPILER_GNU)||(HGL_COMPILER == HGL_COMPILER_LLVM)
|
||||
#define __HGL_FUNC__ __PRETTY_FUNCTION__
|
||||
#elif HGL_COMPILER == HGL_COMPILER_Microsoft
|
||||
#define __HGL_FUNC__ __FUNCSIG__
|
||||
#else
|
||||
#define __HGL_FUNC__ __FUNCTION__
|
||||
#endif//
|
||||
|
||||
namespace hgl
|
||||
{
|
||||
namespace logger
|
||||
{
|
||||
enum LogLevel
|
||||
{
|
||||
llError=0, //错误,肯定出对话框
|
||||
llProblem, //问题,默认出对话框
|
||||
llHint, //提示,不重要,debug状态默认出对话框
|
||||
llLog //记录一下
|
||||
};//enum LogLevel
|
||||
|
||||
inline void Log(LogLevel ll,const UTF16String &str)
|
||||
{
|
||||
std::wcout<<str.c_str()<<std::endl;
|
||||
}
|
||||
|
||||
inline void Log(LogLevel ll,const UTF8String &str)
|
||||
{
|
||||
std::cout<<str.c_str()<<std::endl;
|
||||
}
|
||||
|
||||
inline void DebugLog(LogLevel ll,const UTF16String &str,const char *filename,int line,const char *funcname)
|
||||
{
|
||||
Log(ll,str+U16_TEXT(">>LogFrom(\"")+to_u16(filename)+U16_TEXT("\", ")+UTF16String(line)+U16_TEXT(" line,func:\"")+to_u16(funcname)+U16_TEXT("\")"));
|
||||
}
|
||||
|
||||
inline void DebugLog(LogLevel ll,const UTF8String &str,const char *filename,int line,const char *funcname)
|
||||
{
|
||||
Log(ll,str+U8_TEXT(">>LogFrom(\"")+UTF8String(filename)+U8_TEXT("\", ")+UTF8String(line)+U8_TEXT(" line,func:\"")+UTF8String(funcname)+U8_TEXT("\")"));
|
||||
}
|
||||
|
||||
#define LOG_INFO(str) {Log(llLog, str);}
|
||||
#define LOG_HINT(str) {Log(llHint, str);}
|
||||
#define LOG_PROBLEM(str) {Log(llProblem, str);}
|
||||
#define LOG_ERROR(str) {Log(llError, str);}
|
||||
|
||||
#define RETURN_FALSE {DebugLog(llLog,OS_TEXT("return(false)" ),__FILE__,__LINE__,__HGL_FUNC__);return(false);}
|
||||
#define RETURN_ERROR(v) {DebugLog(llLog,OS_TEXT("return error(")+OSString(v)+OS_TEXT(")"),__FILE__,__LINE__,__HGL_FUNC__);return(v);}
|
||||
#define RETURN_ERROR_NULL {DebugLog(llLog,OS_TEXT("return error(nullptr)" ),__FILE__,__LINE__,__HGL_FUNC__);return(nullptr);}
|
||||
|
||||
#define RETURN_BOOL(proc) {if(proc)return(true);RETURN_FALSE}
|
||||
|
||||
#define IF_FALSE_RETURN(str) if(!str)RETURN_FALSE;
|
||||
}//namespace logger
|
||||
|
||||
using namespace logger;
|
||||
}//namespace hgl
|
||||
#endif//HGL_LOGINFO_INCLUDE
|
133
inc/hgl/log/Logger.h
Normal file
133
inc/hgl/log/Logger.h
Normal file
@@ -0,0 +1,133 @@
|
||||
#ifndef HGL_LOGGER_INCLUDE
|
||||
#define HGL_LOGGER_INCLUDE
|
||||
|
||||
#include<hgl/type/BaseString.h>
|
||||
namespace hgl
|
||||
{
|
||||
namespace logger
|
||||
{
|
||||
enum LogLevel
|
||||
{
|
||||
llError=0, //错误,肯定出对话框
|
||||
llProblem, //问题,默认出对话框
|
||||
llHint, //提示,不重要,debug状态默认出对话框
|
||||
llLog //记录一下
|
||||
};//enum LogLevel
|
||||
|
||||
/**
|
||||
* 日志输出基类
|
||||
*/
|
||||
class Logger
|
||||
{
|
||||
protected:
|
||||
|
||||
LogLevel min_level; ///<最小输出级别
|
||||
UTF16String project_code;
|
||||
|
||||
public:
|
||||
|
||||
Logger(LogLevel l){min_level=l;}
|
||||
virtual ~Logger()=default;
|
||||
|
||||
const LogLevel GetLevel()const{return min_level;} ///<取得最小输出级别
|
||||
|
||||
virtual void Close()=0; ///<关闭日志
|
||||
|
||||
virtual void Write(const u16char *,int)=0; ///<输出一行u16char日志
|
||||
virtual void Write(const char *,int)=0; ///<输出一行char(utf8)日志
|
||||
};//class Logger
|
||||
}//namespace logger
|
||||
|
||||
namespace logger
|
||||
{
|
||||
/**
|
||||
* 日志级别枚举
|
||||
*/
|
||||
enum LOG_LEVEL
|
||||
{
|
||||
LL_START=0, ///<日志级别起始定义
|
||||
|
||||
LL_HOTPOT, ///<性能记录热点
|
||||
LL_CODE, ///<代码日志(引擎内部记录)
|
||||
LL_USER, ///<用户日志(开发人员的日志)
|
||||
LL_RUN, ///<运行日志(实际使用时的日志)
|
||||
|
||||
LL_END ///<日志级别结束定义
|
||||
};
|
||||
|
||||
/**
|
||||
* 影响级别
|
||||
*/
|
||||
enum AFFECTOR_LEVEL
|
||||
{
|
||||
AL_START=0,
|
||||
|
||||
AL_USER, ///<用户级(无关仅要,正常程序逻辑报错)
|
||||
AL_FUNC, ///<函数级(当前函数报错)
|
||||
AL_MODULE, ///<模块级
|
||||
AL_FULL, ///<整体级(很严重,只能退出)
|
||||
|
||||
AL_MUST_FIXED, ///<必须修正的代码问题
|
||||
|
||||
AL_END
|
||||
};
|
||||
|
||||
/**
|
||||
* 日志输出基类
|
||||
*/
|
||||
class LoggerBase
|
||||
{
|
||||
protected:
|
||||
|
||||
LOG_LEVEL log_level;
|
||||
AFFECTOR_LEVEL err_level;
|
||||
|
||||
protected:
|
||||
|
||||
uint32 source_file; ///<源代所在文件ID
|
||||
uint32 source_line; ///<源代码所在行
|
||||
uint32 function; ///<函数ID
|
||||
HGL_POINTER_UINT object_address; ///<对象地址
|
||||
HGL_POINTER_UINT thread_id; ///<线程ID
|
||||
|
||||
public:
|
||||
};//class AdvLogger
|
||||
|
||||
/**
|
||||
* 线程日志
|
||||
*/
|
||||
class ThreadLogger
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
|
||||
};//class ThreadLogger
|
||||
|
||||
/**
|
||||
* 对象日志
|
||||
*/
|
||||
class ObjectLogger
|
||||
{
|
||||
};
|
||||
|
||||
/**
|
||||
* 时间追踪日志
|
||||
* 针对同一数据记录每一次时间下的数值的日志输出模块
|
||||
*/
|
||||
class TimeLogger
|
||||
{
|
||||
};
|
||||
|
||||
/**
|
||||
* 图形日志<br>
|
||||
* 用于记录碰撞信息,寻路信息,路线跟踪等等
|
||||
*/
|
||||
class GraphicsLogger
|
||||
{
|
||||
};//
|
||||
}//namespace logger
|
||||
|
||||
using namespace logger;
|
||||
}//namespace hgl
|
||||
#endif//HGL_LOGGER_INCLUDE
|
Reference in New Issue
Block a user