更新时间:2024-12-03 GMT+08:00

日志分析

日志路径

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)

表1

影响函数

说明

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*格式传入