云日志服务Logging handler SDK 本文主要介绍Logging handler SDK使用方法。 Python logging handler概述 Python logging 模块提供了一套灵活的日志记录系统,允许开发者在应用程序中记录不同级别的消息,如调试信息、警告、错误等。使用Python SDK提供的logging Handler可以使Python程序在日志在不落盘的情况下自动上传到日志服务上,这种上传方式具有实时性、异步性、吞吐量大、配置简单等特点。使用这部分功能,只需要配置handler目录下的logging.ini 内的几个关键配置即可直接使用。 使用步骤 1、安装ctyunltspythonsdk:1.10.0,目录中包含ctyunltspythonsdk1.10.0.tar.gz。 plaintext pip install ctyunltspythonsdk1.10.0.tar.gz 如果安装失败,可单独安装requirementspy3.txt,详情可参考python SDK 概述2.2下载和安装。 plaintext pip install r requirementspy3.txt 2、修改handler 中的 logging.ini 中的自定义配置,里面包含了与日志上传服务相关的5个参数,这和使用SDK上传日志类似。 plaintext ;替换下面5个参数 args('your endpoint','your accesskey','your secretkey', 'logproject', 'logunit',) 3、执行example/samplelogginghandler.py 示例即可。 logging.ini 配置 在用例中自定义配置了三种handler :consoleHandler、asyncHandler、syncHandler。 1、consoleHandler的配置中classStreamHandler,这代表会将logger 日志输出到控制台。 2、syncHandler 配置中的 classhandler.AsyncHandler,这代表handler 将会去使用SyncHandler 类的配置进行日志上传,这个类使用的是同步单线程将logger 的日志上传到云日志服务中。 3、asyncHandler配置中的 classhandler.AsyncHandler,这代表handler 将会去使用AsyncHandler 类的配置进行日志上传,这个类使用的是异步批量多线程方式将logger 的日志上传到云日志服务中。 用户使用这个功能的时候,需要修改handler 中的args 配置。里面包含了与日志上传服务相关的5个参数,这和使用SDK上传日志类似。 plaintext ;替换下面5个参数 args('your endpoint','your accesskey','your secretkey', 'logproject', 'logunit',) ;使用环境变量 ;args(os.environ.get('LTSENDPOINT', '',),os.environ.get('LTSACCESSKEY', ''), os.environ.get('LTSSECRETKEY', ''),os.environ.get('LTSLOGPROJECT', ''), os.environ.get('LTSLOGUNIT', '')) 当然如果对安全性要求较高,强烈建议不要将明文accesskey 和 secretkey 写在logging.ini配置中,代替使用系统变量存放。可使用args(os.environ.get('LTSENDPOINT', '',)获取系统变量。 plaintext [loggers] keysroot,synclogging,asynclogging [handlers] keysconsoleHandler, asyncHandler,syncHandler [formatters] keysconsoleFormatter,ltsFormatter [loggerroot] levelDEBUG handlersconsoleHandler [loggerasynclogging] levelINFO handlersconsoleHandler,asyncHandler qualnameasynclogging propagate0 [loggersynclogging] levelINFO handlersconsoleHandler,syncHandler qualnamesynclogging propagate0 [handlerconsoleHandler] classStreamHandler levelDEBUG formatterconsoleFormatter args(sys.stdout,) [handlerasyncHandler] classhandler.AsyncHandler formatterltsFormatter ;替换下面5个参数 args('your endpoint','your accesskey','your secretkey', 'logproject', 'logunit',) [handlersyncHandler] classhandler.SyncHandler formatterltsFormatter ;替换下面5个参数 args('your endpoint','your accesskey','your secretkey', 'logproject', 'logunit',) [formatterconsoleFormatter] format%(asctime)s %(name)s %(levelname)s %(message)s [formatterltsFormatter] format%(asctime)s %(levelname)s %(threadName)s %(filename)s[line:%(lineno)d] %(message)s