Pygelf如何发送具有“notice”严重性的日志

2024-04-28 18:01:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用pygelf日志处理程序将Flask应用程序与Graylog集成。在

根据documentation,Graylog基于RFC 3164支持八个syslog严重级别,即:

(...)
        Numerical         Severity
          Code

           0       Emergency: system is unusable
           1       Alert: action must be taken immediately
           2       Critical: critical conditions
           3       Error: error conditions
           4       Warning: warning conditions
           5       Notice: normal but significant condition
           6       Informational: informational messages
           7       Debug: debug-level messages
(...)

虽然Graylog支持级别5,即notice,但Python的日志记录包似乎既没有notice()日志记录方法(如info()或{}),也没有相应的日志级别定义:

^{pr2}$

问题: {{cda>有没有使用^ cd5>级别的方法?在


其他背景:

我使用的是Flask框架,默认情况下,它使用日志级别6(info)和7(debug)来记录自己的内部http请求数据,如下所示:

101.101.101.101 - - [03/Sep/2019 14:15:55] "GET /static/images/favicon.ico HTTP/1.0" 200 -

由于这些内部日志,我自己的infodebug级日志在人群中丢失。我不想完全过滤掉它们,但是我仍然希望有一些不同的信息日志级别,它没有warning那么高——这就是为什么我可以使用notice级别的日志记录,不幸的是,我不能开箱即用。在


Tags: 方法debuginfo应用程序处理程序flaskgraylogdocumentation
1条回答
网友
1楼 · 发布于 2024-04-28 18:01:21

Pygelf在内部持有一个dict,它映射Python日志记录级别及其相应的Graylog日志记录级别,在gelf.py中:

LEVELS = {
    logging.DEBUG: 7,
    logging.INFO: 6,
    logging.WARNING: 4,
    logging.ERROR: 3,
    logging.CRITICAL: 2
}

我的解决方案:为了登录Graylog的第5级(通知),我必须:

  1. 在记录器配置中添加新的日志级别映射:
^{pr2}$
  1. 将记录器调用从默认方法更改为具有自定义日志级别的方法:
import logging
logger = logging.getLogger()

(...)

# logger.debug('Old logging to "debug"-level logger')
logger.log(NOTIFY, 'New logging to "notify"-level logger')

相关问题 更多 >