日志分类
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);

这篇博客探讨了SDL日志系统的分类和优先级。SDL日志包括多个分类,如SDL_LOG_CATEGORY_APPLICATION,其默认优先级为SDL_LOG_PRIORITY_INFO。通过设置函数,可以调整不同分类的日志输出优先级,并能重定向日志输出,实现日志拦截功能。
5万+

被折叠的 条评论
为什么被折叠?



