前面和大家分享了如何编译oss c sdk以及如何运行oss c sdk中的sample实例。今天和大家分享一下如何在oss c sdk中进行日志设置。
最近,陆续有用户反馈如何在oss c sdk中进行日志输出的设置,包括日志级别,日志输出的路径指定、日志输出的格式以及自定义日志输出的处理,这些功能其实在oss c sdk中都提供了相应接口,现在和大家一起分享一下,有考虑不周的地方希望大家指出。
大家可以在aos_log.h中看到sdk提供的一些日志设置的接口。
(1)设置日志输出路径
void aos_log_set_output(apr_file_t *output)
这个接口允许用户设置日志输出的路径,默认情况下该值为NULL,利用stderr文件描述符将相关的日志信息输出到屏幕。如果用户想将日志输出到指定的文件中,只需要给出一个apr_file_t类型的参数,就可以将日志输出到指定的文件中。比如:
aos_pool_t *p;
apr_file_t *log_file;
char *log_filename = "./log_file";
aos_pool_create(&p, NULL);
apr_file_open(&log_file, log_filename, APR_WRITE|APR_CREATE| APR_TRUNCATE, APR_OS_DEFAULT, p);
aos_log_set_output(log_file);
...
通过以上设置就将日志重定向到本地目录的log_file文件中。这段代码中用到了apr库提供的apr_file_open函数,具体可以参考 http://apr.apache.org/docs/apr/1.4/group__apr__file__io.html#gabda14cbf242fb4fe99055434213e5446 。 另外需要注意的是这个日志输出设定时使用的内存池pool的生命周期,避免发生内存访问错误。
(2)设置日志输出的级别
void aos_log_set_level(aos_log_level_e level)
这个接口允许用户设置日志输出的日志级别,aos_log_level_e 是一个枚举类型,定义如下:
typedef enum {
AOS_LOG_OFF = 1,
AOS_LOG_FATAL,
AOS_LOG_ERROR,
AOS_LOG_WARN,
AOS_LOG_INFO,
AOS_LOG_DEBUG,
AOS_LOG_TRACE,
AOS_LOG_ALL
} aos_log_level_e;
默认情况下使用 AOS_LOG_WARN,用户可以根据自己的需求设置日志级别
(3)设置日志输出的callback,对日志输出做处理
void aos_log_set_print(aos_log_print_pt p);
void aos_log_set_format(aos_log_format_pt p);
oss c sdk提供了两个callback给用户,允许用户对日志输出进行个性化定制,默认的实现是aos_log_print_default和aos_log_format_default,感兴趣的用户可以按照自己的需求进行定制。
以上就是oss c sdk提供给用户对于日志输出的接口,用户可以根据上面的简单介绍根据自己的需求设置日志输出,希望今天的分享能够对大家使用oss c sdk有所帮助
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。