您的位置:首页 > 其它

SDL 日志系统分析

2015-07-21 21:21 543 查看

日志分类

SDL日志具有下列分类

日志分类
SDL_LOG_CATEGORY_APPLICATION
SDL_LOG_CATEGORY_ERROR
SDL_LOG_CATEGORY_ASSERT
SDL_LOG_CATEGORY_SYSTEM
SDL_LOG_CATEGORY_AUDIO
SDL_LOG_CATEGORY_VIDEO
SDL_LOG_CATEGORY_RENDER
SDL_LOG_CATEGORY_INPUT
SDL_LOG_CATEGORY_TEST
SDL日志具有下列优选级

优选级
SDL_LOG_PRIORITY_VERBOSE(低优先级)
SDL_LOG_PRIORITY_DEBUG
SDL_LOG_PRIORITY_INFO
SDL_LOG_PRIORITY_WARN
SDL_LOG_PRIORITY_ERROR
SDL_LOG_PRIORITY_CRITICAL
SDL_NUM_LOG_PRIORITIES(高优先级)
在内部所有的日志输出函数都调用

void
SDL_LogMessageV(int category, SDL_LogPriority priority, const char *fmt, va_list ap);


SDL日志有一系列的函数,它们具有不同的优选级。

void
SDL_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, ...);
//对应SDL_LOG_PRIORITY_INFO优选级,分类为SDL_LOG_CATEGORY_APPLICATION


例如SDL_Log的优先级为SDL_LOG_PRIORITY_INFO,分类是SDL_LOG_CATEGORY_APPLICATION。

你可以设置SDL_LOG_CATEGORY_APPLICATION分类的输出优先级,仅当分类的输出优先级低于等于SDL_LOG_PRIORITY_INFO日志才会真正输出。默认SDL_LOG_CATEGORY_APPLICATION的优先级为SDL_LOG_PRIORITY_INFO,因此默认情况下SDL_Log是输出的。

类似的SDL还有下列日志函数

/* SDL_LogVerbose 优先级为SDL_LOG_PRIORITY_VERBOSE */
void SDL_LogVerbose(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...);
/* SDL_LogVerbose 优先级为SDL_LOG_PRIORITY_DEBUG */
void SDL_LogDebug(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...);
/* SDL_LogInfo 优先级为SDL_LOG_PRIORITY_INFO */
void SDL_LogInfo(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...);
/* SDL_LogWarn优先级为SDL_LOG_PRIORITY_WARN */
void SDL_LogWarn(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...);
/* SDL_LogError优先级为SDL_LOG_PRIORITY_ERROR */
void SDL_LogError(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...);
/* SDL_LogCritical优先级为SDL_LOG_PRIORITY_CRITICAL */
void SDL_LogCritical(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...);
void SDL_LogMessage(int category, SDL_LogPriority priority, SDL_PRINTF_FORMAT_STRING const char *fmt, ...);


因此下面的函数具有比上面的函数更加高优先输出的特性。

另外你可以使用设置函数来改变某种分类的优先级别

void
SDL_LogSetPriority(int category, SDL_LogPriority priority);


SDL日志的输出也可以被重新定向,你可以使用下面的函数来取得和设置输出函数。

void SDL_LogGetOutputFunction(SDL_LogOutputFunction *callback, void **userdata);
void SDL_LogSetOutputFunction(SDL_LogOutputFunction callback, void *userdata);


使用这两个函数你可以截获日志。

函数,可以将全部分类设置为相同的输出优先级。

void SDL_LogSetAllPriority(SDL_LogPriority priority);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: