Python日志记录 – 当前安装的记录器/处理程序的概述

我正在尝试使用代码中的记录器从Django项目中设置Fluentd日志处理程序:

def get_fluentd_logger(name):
    import logging
    from fluent import handler

    logging.basicConfig(level=logging.DEBUG)
    logger = logging.getLogger(name)
    logger.addHandler(handler.FluentHandler(name, host='localhost', port=24224))
    return logger

handler.FluentHandler来自包fluent-logger,我在本地运行流畅.

fluent.conf:

<source>
  type forward
  port 24224
</source>

<match **>
  type copy
  <store>
        type stdout
  </store>

  <store>
          type forward
          send_timeout 60s
          recover_wait 10s
          heartbeat_interval 1s
          phi_threshold 8
          hard_timeout 60s

          <server>
            name monitoring
            host 1.2.3.4
            port 24224
            weight 100
          </server>
  </store>
</match>

当我从非django python项目运行它时它工作正常,但是当从django调用它时它什么也没做.

问题是:有没有办法查看当前安装的记录器及其处理程序,以便我可以调试这种情况?

[编辑]

从django设置完成后,如下所示:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'simple': {
            'format': '%(levelname)s: %(message)s'
        },
    },
    'handlers': {
       'fluentdebug':{
            'level':'DEBUG',
            'class':'fluent.handler.FluentHandler',
            'formatter': 'simple',
            'tag':'foo.bar.baz',
            'host':'localhost',
            'port':24224,
        },
    },
    'loggers': {
        'foo.bar.baz': {
            'handlers': ['fluentdebug'],
            'level': 'DEBUG',
            'propagate': True,
        },
    }
}

它确实有效.然而,我希望能够从代码中执行此操作,因为foo.bar.baz可以采用许多值,并且我不想使用20个记录器和处理程序来完全相同地污染此文件.

也许真正的问题是:为什么我不能在Django执行它的设置之后将记录器从代码添加到日志记录中?

解决方法:

这不是我之前处理过的事情,但Logging Tree听起来像你可能正在寻找的.你应该阅读Brandon’s post,但这是一个输出的例子:

<--""
   Level WARNING
   Handler Stream <open file '<stderr>', mode 'w' at ...>
   |
   o<--[cherrypy]
       |
       o<--"cherrypy.access"
       |   Level INFO
       |   Handler Stream <open file '<stdout>', mode 'w' ...>
       |
       o<--"cherrypy.error"
           Level INFO
           Handler Stream <open file '<stderr>', mode 'w' ...>
上一篇:EFK的学习(Elasticsearch + Fluentd+ Kibana)


下一篇:nginx – docker compose oci runtime error,$PATH中找不到可执行文件