2019-08-19 19:19:58 +08:00
|
|
|
|
#ifndef HGL_LOGGER_INCLUDE
|
|
|
|
|
#define HGL_LOGGER_INCLUDE
|
|
|
|
|
|
2021-01-15 20:26:41 +08:00
|
|
|
|
#include<hgl/log/LogInfo.h>
|
2019-08-19 19:19:58 +08:00
|
|
|
|
namespace hgl
|
|
|
|
|
{
|
|
|
|
|
namespace logger
|
|
|
|
|
{
|
|
|
|
|
/**
|
|
|
|
|
* 日志输出基类
|
|
|
|
|
*/
|
|
|
|
|
class Logger
|
|
|
|
|
{
|
|
|
|
|
protected:
|
2019-08-29 15:28:49 +08:00
|
|
|
|
|
2019-08-19 19:19:58 +08:00
|
|
|
|
LogLevel min_level; ///<最小输出级别
|
2019-08-29 15:28:49 +08:00
|
|
|
|
Logger *parent; ///<上级输出器
|
2019-08-19 19:19:58 +08:00
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
2019-08-29 15:28:49 +08:00
|
|
|
|
Logger(LogLevel l,Logger *pl=nullptr){min_level=l;parent=pl;}
|
2019-08-19 19:19:58 +08:00
|
|
|
|
virtual ~Logger()=default;
|
|
|
|
|
|
2019-08-29 15:28:49 +08:00
|
|
|
|
const LogLevel GetLevel ()const{return min_level;} ///<取得最小输出级别
|
|
|
|
|
Logger * GetParent (){return parent;} ///<取得上级日志输出器
|
2019-08-19 19:19:58 +08:00
|
|
|
|
|
|
|
|
|
virtual void Close()=0; ///<关闭日志
|
|
|
|
|
|
|
|
|
|
virtual void Write(const u16char *,int)=0; ///<输出一行u16char日志
|
2020-07-07 19:14:42 +08:00
|
|
|
|
virtual void Write(const u8char *,int)=0; ///<输出一行u8char日志
|
2019-08-19 19:19:58 +08:00
|
|
|
|
};//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:
|
2019-08-30 19:30:57 +08:00
|
|
|
|
};//class LoggerBase
|
2019-08-19 19:19:58 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 线程日志
|
|
|
|
|
*/
|
|
|
|
|
class ThreadLogger
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
};//class ThreadLogger
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 对象日志
|
|
|
|
|
*/
|
|
|
|
|
class ObjectLogger
|
|
|
|
|
{
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 时间追踪日志
|
|
|
|
|
* 针对同一数据记录每一次时间下的数值的日志输出模块
|
|
|
|
|
*/
|
|
|
|
|
class TimeLogger
|
|
|
|
|
{
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 图形日志<br>
|
|
|
|
|
* 用于记录碰撞信息,寻路信息,路线跟踪等等
|
|
|
|
|
*/
|
|
|
|
|
class GraphicsLogger
|
|
|
|
|
{
|
|
|
|
|
};//
|
|
|
|
|
}//namespace logger
|
|
|
|
|
|
|
|
|
|
using namespace logger;
|
|
|
|
|
}//namespace hgl
|
|
|
|
|
#endif//HGL_LOGGER_INCLUDE
|