日志分析
日志路径
OBS C SDK的日志路径是通过OBS.ini中LogPath字段指定的,默认存放于与C SDK动态库lib目录同级的logs目录中。定位问题只需要查看同级logs目录下运行日志eSDK-OBS-API-*-C.run.log或者obs-sdk-c.run.log。
OBS.ini文件应与动态库(libeSDKLogAPI.so)同一目录。
日志内容格式
SDK日志格式为:日志时间|日志级别|线程号|日志内容。示例如下:
运行日志: 2018-05-15 22:22:54 803| INFO|[140677572568864]|request_perform start
日志级别
当系统出现问题需要定位且当前的日志无法满足要求时,可以通过修改日志的级别来获取更多的信息。其中DEBUG(0)日志信息最丰富,ERROR(3)日志信息最少。
具体说明如下:
- DEBUG(0):调试级别,如果设置为这个级别,除了打印INFO级别的信息外,还将打印其它帮助调试的信息等。
- INFO(1):信息级别,如果设置为这个级别,除了打印WARN级别的信息外,还将打印OBS接口的调用过程和关键信息等。
- WARN(2):告警级别,如果设置为这个级别,除了打印ERROR级别的信息外,还将打印一些关键事件的信息,如curl_global_init初始化失败等。
- ERROR(3):错误级别,如果设置为这个级别,仅打印发生异常时的错误信息。
设置方式
修改lib目录下的OBS.ini,配置日志的大小、个数以及级别(其中*_Run参数的配置为最常用的配置项):
;Every line must be less than 1024 [LogConfig] ;Log Size: unit=KB, 10MB = 10KB * 1024 = 10240KB LogSize_Interface=10240 LogSize_Operation=10240 LogSize_Run=10240 ;Log Num LogNum_Interface=10 LogNum_Operation=10 LogNum_Run=10 ;Log level: debug = 0,info = 1,warn = 2,error = 3 LogLevel_Interface=0 LogLevel_Operation=0 LogLevel_Run=0 ;LogFilePermission LogFilePermission=0600 [ProductConfig] ;Product Name sdkname=eSDK-OBS-API-Linux-C [LogPath] ;Log Path is relative to the path of configuration file LogPath=../logs
其他日志相关配置
Windows下,OBS.ini中LogPath字段可以以wchar_t格式读取,需要通过设置文件路径编码来实现,案例如下:
set_file_path_code(UNICODE_CODE);//默认是ANSI_CODE
设置后,以下方法的本地文件路径也需要是wchar_t类型(参数是以char*格式传入,内部处理逻辑是wchar_t)
影响函数 |
说明 |
---|---|
download_file |
参数download_file_config的downLoad_file、check_point_file成员需要是wchar_t类型,以char*格式传入 |
upload_file |
参数upload_file_config的upload_file、check_point_file成员需要是wchar_t类型,以char*格式传入 |
set_obs_log_path |
参数log_path需要是wchar_t类型,以char*格式传入 |