Azure日志工作区OMS的python异步日志处理程序和服务扩展。

logging-azure的Python项目详细描述


Python日志记录Azure工作区OMS扩展

PythonVersionCode style: black

此包提供了一个异步解决方案,用于使用 提供了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日志工作区的客户ID
  • AZURE_LOG_SHARED_KEY:Azure日志工作区的客户共享密钥
  • AZURE_LOG_DEFAULT_NAME:默认的“日志类型”名称,用于指示日志的存储位置。 在Azure日志工作区中,这将以“\CL”作为后缀。在

读取以下环境变量以调整扩展的某些参数, 它们都有默认值,因此是可选的:

  • AZURE_LOG_MAX_CONCURRENT_REQUESTSDefault:10一次处理的最大异步请求数。 由grequests使用
  • AZURE_LOG_SEND_FREQUENCYDefault: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门户中提供以下输出:

AzureLogOMSExample

这允许直接从Azure日志OMS轻松创建应用程序的自定义查询和警报 解决方案。在

<小时2> 有用的链接
  • {a4}
  • {a5}
  • {a6}
  • {a7}

包装要求

  • {a8}
  • {a9}
  • {a10}
  • {a11}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用Logback和Lombok   Java中的线程本地初始化?   java如何使用XPATH从XML中获取值   java如何从谷歌扳手的变异中获得合适的数据类型值?   java在完成autoIt执行后将控制权返回Selenium测试执行   java在Android Studio中添加新资源文件夹的正确方法?   java矩阵模板类   GetSharedReferences上的java Android SharedReferences NullPointerException   java意外的Maven依赖项中介行为   oop java:确保该类型只有一个实例   java我应该使用什么作为null的哈希代码?   http使用单个操作下载多个文件   java GetMappings在弹性搜索7中发生了变化。十、   java Swing:在generalpath上检测鼠标移动   无验证的java jsoup解析   twitter(安卓应用)中的java无效令牌访问格式   使用HttpServletRequest创建的JSESSIONID cookie的java设置路径。getSession(真)   阿里云Java捕获和提升事件中的错误处理   从节点调用java程序。js应用程序