Azure日志工作区OMS的python异步日志处理程序和服务扩展。
logging-azure的Python项目详细描述
Python日志记录Azure工作区OMS扩展
此包提供了一个异步解决方案,用于使用
提供了restapi,所有这些都作为python内置logging
模块的处理程序和服务扩展提供。在
服务的工作方式是实例化连接到日志请求池的始终活动(非守护进程)线程,其中
日志将排队,然后定期在池中运行,以便批量异步发送请求
使用grequests
包。所有这些都是为了在不中断或减慢主管道的情况下安全地进行日志记录
流程执行尽可能透明。在
安装
对于通过PyPi通过分布式软件包安装:
$ pip install logging-azure
或者,如果要从源代码安装,则可以签出git存储库并使用setuptools
进行安装:
$ python setup.py install
特殊条件
安装GEvent
例如,如果您需要在docker分布式应用程序映像中使用此包,您将
需要有一个可用的编译器和必要的库,以便构建所需的cython
和{grequests
运行。在
例如,如果使用阿尔卑斯山图像,可以通过以下方法实现:
FROMpython:3.7.4-alpine3.9# Install required dependencies for building like git etc.RUN apk add --virtual .build-dep build-base [...]# Install the python packageRUN pip install --no-cache-dir logging-azure # Cleanup no-longer required dependencies for a lighter imageRUN apk del .build-dep
GEvent monkey补丁ssl
由于这个包利用了grequests
包,在几种情况下,它本身使用gevent
,
与在调试Flask服务器中运行一样,您可能需要monkey patch gevent
才能正常工作。在
为此,您只需在应用程序中尽早运行以下。:
^{pr2}$通常,在运行应用程序时,gevent
本身会警告您,如果您需要这样做或不够早的话,
所以不难错过。在
使用
包配置
要配置扩展,需要读取以下环境变量:
AZURE_LOG_CUSTOMER_ID
:Azure日志工作区的客户IDAZURE_LOG_SHARED_KEY
:Azure日志工作区的客户共享密钥AZURE_LOG_DEFAULT_NAME
:默认的“日志类型”名称,用于指示日志的存储位置。 在Azure日志工作区中,这将以“\CL”作为后缀。在
读取以下环境变量以调整扩展的某些参数, 它们都有默认值,因此是可选的:
AZURE_LOG_MAX_CONCURRENT_REQUESTS
:Default:10一次处理的最大异步请求数。 由grequests
使用AZURE_LOG_SEND_FREQUENCY
:Default:5服务线程在发送池日志之前应该等待多少秒。在
日志记录配置
与任何其他处理程序一样,只需要使用
logging_azure.handler.AzureLogServiceHandler
类:
[...]"handlers":{"console":{"level":logging.DEBUG,"class":"logging.StreamHandler","formatter":"colorize"},"azure_log_oms":{"level":logging.INFO,"class":"logging_azure.handler.AzureLogServiceHandler","formatter":"azure"},"default":{"level":logging.INFO,"class":"logging.StreamHandler","formatter":"default"},},[...]
然后将处理程序添加到选定的记录器实例:
[...]"loggers":{LOGGER_NAME:{"handlers":["console"]ifIS_LOCAL_DEV_INSTANCEelse["default","azure_log_oms"],"level":LOG_LEVEL,"propagate":True,}},[...]
建议
设置适当的最低日志级别
为了防止Azure Log OMS摄取对健谈应用程序造成额外成本,建议设置
为应用程序提供足够的日志级别(例如避免logging.DEBUG
)。在
{21>建议在cd21>期间适当地配置日志 例如本地开发或CI环境。在
你被警告了。在
为邮件设置清除格式设置工具
这个包提供了大量的信息,通过阅读
日志记录为了方便Azure日志OMS的查询和接收,所以您可能只需要使用特定的
只格式化message
自身的格式化程序,如下所示:
[...]"formatters":{"default":{"format":'[%(asctime)s] %(levelname)s%(name)s%(module)s "%(message)s"',"datefmt":"%d/%b/%Y %H:%M:%S",},"azure":{"format":'%(message)s',},[...]
例如,这将在Azure门户中提供以下输出:
这允许直接从Azure日志OMS轻松创建应用程序的自定义查询和警报 解决方案。在
<小时2> 有用的链接- {a4}
- {a5}
- {a6}
- {a7}
包装要求
- {a8}
- {a9}
- {a10}
- {a11}
- 项目
标签: