You need to enable JavaScript to run this app.
文档中心
智能美化特效

智能美化特效

复制全文
下载 pdf
常见问题FAQ
日志回调与文件写入指南
复制全文
下载 pdf
日志回调与文件写入指南
​
CV SDK 452及以上版本支持通过回调获取 SDK 内部日志。接入方可设置日志过滤级别,并在回调中将日志输出到控制台或写入本地文件,用于排查线上、线下接入问题。​
资源与性能提示:部分素材可能逐帧输出日志。将日志写入文件前,请评估磁盘占用增量和日志输出带来的性能开销,并根据排查需要设置合适的过滤级别。​
一、接入流程​
  1. 在初始化 SDK 前设置日志过滤级别。​
  1. 注册日志回调,并在回调中实现控制台输出或文件写入逻辑。​
  1. 不再需要采集日志时,移除日志回调。​
  1. 日志级别按枚举值依次递增;过滤级别越高,输出的日志越少。本文示例仅将日志输出到控制台。如需写入文件,请在回调中实现文件持久化,并根据业务需要设置文件轮转、容量限制和清理策略。​
二、iOS​
1.设置日志级别​
​
/**​
* @brief 日志过滤级别。级别依次递增,输出的日志量依次减少。​
*/​
typedef enum {​
BEF_AI_LOG_LEVEL_NONE = 0,​
BEF_AI_LOG_LEVEL_DEFAULT = 1,​
BEF_AI_LOG_LEVEL_VERBOSE = 2,​
BEF_AI_LOG_LEVEL_DEBUG = 3,​
BEF_AI_LOG_LEVEL_INFO = 4,​
BEF_AI_LOG_LEVEL_WARN = 5,​
BEF_AI_LOG_LEVEL_ERROR = 6,​
BEF_AI_LOG_LEVEL_FATAL = 7,​
BEF_AI_LOG_LEVEL_SILENT = 8,​
} bef_ai_log_level;​
​
/// @brief 设置日志等级​
/// @param logLevel 日志级别​
BEF_SDK_API void bef_effect_ai_set_log_level(bef_ai_log_level logLevel);​
​
2.设置与移除日志回调​
​
typedef int (*bef_ai_log_callback)(int logLevel, const char* msg);​
​
/// @brief 设置日志回调​
/// @param callback 自定义日志回调​
/// @return 成功时返回 BEF_RESULT_SUC​
BEF_SDK_API bef_effect_result_t bef_effect_ai_set_log_callback(​
bef_ai_log_callback callback​
);​
​
/// @brief 移除日志回调​
/// @return 成功时返回 BEF_RESULT_SUC​
BEF_SDK_API bef_effect_result_t bef_effect_ai_remove_log_callback();​
​
3.使用示例​
完整实现可参考示例工程中的 BEEffectManager.mm 文件。示例工程可通过定义 EFFECT_LOG_ENABLED 宏开启相关功能。​
​
// 1. 自定义日志回调。​
// 本示例将日志输出到控制台;接入方也可以在此处写入本地文件。​
int effectLogCallback(int logLevel, const char* msg) {​
printf("[EffectSDK] %s\n", msg);​
return 0;​
}​
​
// 2. 在初始化 SDK 前设置日志过滤级别并注册回调。​
bef_effect_ai_set_log_level(BEF_AI_LOG_LEVEL_WARN);​
bef_effect_ai_set_log_callback(effectLogCallback);​
​
三、Android​
1.设置日志级别​
​
public enum LogLevel {​
BEF_AI_LOG_LEVEL_NONE(0),​
BEF_AI_LOG_LEVEL_DEFAULT(1),​
BEF_AI_LOG_LEVEL_VERBOSE(2),​
BEF_AI_LOG_LEVEL_DEBUG(3),​
BEF_AI_LOG_LEVEL_INFO(4),​
BEF_AI_LOG_LEVEL_WARN(5),​
BEF_AI_LOG_LEVEL_ERROR(6),​
BEF_AI_LOG_LEVEL_FATAL(7),​
BEF_AI_LOG_LEVEL_SILENT(8);​
​
private int value;​
​
LogLevel(int value) {​
this.value = value;​
}​
​
public int getValue() {​
return value;​
}​
}​
​
// 设置日志级别​
public void setLogLevel(EffectsSDKEffectConstants.LogLevel logLevel) {​
nativeSetLogLevel(logLevel.getValue());​
}​
​
2.设置与移除日志回调​
​
// 日志回调接口​
public interface LogCallBack {​
void callback(int level, String message);​
}​
​
// 注册日志回调​
public int registerLogCallback(LogCallBack callBack) {​
mLogCallBack = callBack;​
return nativeSetLogCallback();​
}​
​
// 移除日志回调​
public int removeLogCallback() {​
return nativeRemoveLogCallback();​
}​
​
3.使用示例​
​
// 1. 自定义日志回调。​
// 本示例将日志输出到控制台;接入方也可以在此处写入本地文件。​
public static class LogCallBackImpl implements LogCallBack {​
@Override​
public void callback(int level, String message) {​
Log.i("EffectSDK", message);​
}​
}​
​
// 2. 在初始化 SDK 前注册回调并设置日志过滤级别。​
mRenderManager.registerLogCallback(new LogCallBackImpl());​
mRenderManager.setLogLevel(​
EffectsSDKEffectConstants.LogLevel.BEF_AI_LOG_LEVEL_WARN​
);​
​
四、使用建议​
  • 仅在排查问题所需的时间范围内采集日志,避免长期写入造成文件持续增长。​
  • 生产环境中应结合磁盘容量和性能要求选择日志级别。​
  • 日志采集结束后及时移除回调,并清理不再需要的日志文件。​
​
最近更新时间:2026.10.30 10:58:03
这个页面对您有帮助吗?
有用
有用
无用
无用