日志分析(Python SDK)
日志配置
OBS Python SDK基于Python日志库提供了日志功能,您可以通过ObsClient.initLog开启日志功能并进行配置。示例代码如下:
# 引入模块 from obs import LogConf from obs import ObsClient # 创建ObsClient实例 obsClient = ObsClient( access_key_id=os.getenv("AccessKeyID"), secret_access_key=os.getenv("SecretAccessKey"), server='https://your-endpoint' ) # 指定日志配置文件路径,初始化ObsClient日志 obsClient.initLog(LogConf('./log.conf'), 'obs_logger');
- 日志功能默认是关闭的,需要主动开启。
- 日志配置文件样例(log.conf)包含在OBS Python SDK开发包中,您需要根据实际情况修改log.conf中的配置参数。
OBS Python SDK的日志模块是线程安全非进程安全的,如果在多进程场景下使用ObsClient请务必为每个ObsClient配置独立的日志路径,防止多个进程并发写日志时发生冲突。
日志内容格式
SDK日志格式为:日志时间|进程号|线程号|日志级别|日志内容。示例如下:
2017-11-06 13:46:54,936|process:6100|thread:12700|DEBUG|HTTP(s)+XML|OBS_LOGGER|__parse_xml,188|http response result:status:200,reason:OK,code:None,message:None,headers:[('id-2', 'LgOKocHfuHe0rFSUHS6LcChzcoYes0luPgqxhUfCP58xp3MZh2n4YKRPpABV8GEK'), ('connection', 'close'), ('request-id', '0001AFF8E60000015F8FDA1EA5AE04E3'), ('date', 'Mon, 06 Nov 2017 05:42:37 GMT'), ('content-type', 'application/xml')]| 2017-11-06 13:46:54,937|process:6100|thread:12700|INFO|HTTP(s)+XML|OBS_LOGGER|doClose,349|server inform to close connection| 2017-11-06 13:46:54,937|process:6100|thread:12700|INFO|HTTP(s)+XML|OBS_LOGGER|wrapper,59|listBuckets cost 56 ms|
日志级别
当系统出现问题需要定位且当前的日志无法满足要求时,可以通过修改日志的级别来获取更多的信息。其中DEBUG日志信息最丰富,ERROR日志信息最少。
具体说明如下:
- DEBUG:调试级别,如果设置为这个级别,将打印SDK记录的所有日志。
- INFO:信息级别,如果设置为这个级别,除了打印WARNING级别的信息外,还将打印HTTP/HTTPS请求的耗时时间等信息。
- WARNING:告警级别,如果设置为这个级别,除了打印ERROR级别的信息外,还将打印部分关键事件的信息。
- ERROR:错误级别,如果设置为这个级别,仅打印发生异常时的错误信息。
配置文件中的LogFileLevel参数用于设置日志文件的日志级别;PrintLogLevel参数用于设置控制台日志的日志级别。