SDL 日志系统分析

SDL日志系统分类与优先级分析
这篇博客探讨了SDL日志系统的分类和优先级。SDL日志包括多个分类,如SDL_LOG_CATEGORY_APPLICATION,其默认优先级为SDL_LOG_PRIORITY_INFO。通过设置函数,可以调整不同分类的日志输出优先级,并能重定向日志输出,实现日志拦截功能。
部署运行你感兴趣的模型镜像

日志分类

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);

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值