【问题标题】:Python Loggly logging setup using dictconfig使用 dictconfig 的 Python Loggly 日志记录设置
【发布时间】:2015-07-27 16:21:12
【问题描述】:

我想在我的新 PaaS python 应用程序中尝试 Loggly,因为我通常针对 linux 服务器进行编码并且只使用标准的旋转文件处理程序。这带来了一个问题,因为他们记录的配置仅涵盖使用 .conf 文件,并且由于他们在首选 HTTPS 处理程序中有一些自定义方法,因此有一些技巧可以以任何其他方式配置它。

我一直在使用嵌套的 .py 文件来处理我的应用程序的其余部分的配置并且不想更改,而且看起来文档中首选 dictconfig 方法。

那么,如何解决呢?

【问题讨论】:

    标签: python logging https loggly


    【解决方案1】:

    这种方式使用标准python日志模块的dictconfig方法,在2.7.9上测试过

    安装“loggly-python-handler”模块。

    在您的代码中,您可以执行以下操作,其中 'conf' 是您的 .py 配置文件:

    import logging, logging.config
    import loggly.handlers
    import conf
    
    # Init Logging
    logging.config.dictConfig(conf.LOGGING)
    logger = logging.getLogger(u'root')
    

    然后,在“conf.py”文件中,您可以使用以下字典(替换您的密钥):

    LOGGING = {
        u'version': 1,
        u'handlers': {
            u'loggly': {
                u'class': u'loggly.handlers.HTTPSHandler',
                u'formatter': u'basic',
                u'level': u'DEBUG',
                u'url': u'https://logs-01.loggly.com/inputs/YOUR_KEY_HERE/tag/pytest'
            },
            u'console': {
                u'class': u'logging.StreamHandler',
                u'level': u'DEBUG',
                u'formatter': u'basic',
                u'stream': u'ext://sys.stdout',
            }
        },
        u'formatters': {
            u'basic': {
                u'format': u'%(asctime)s | %(name)15s:%(lineno)3s:%(funcName)15s | %(levelname)7s | %(message)s'
            }
        },
        u'loggers': {
            u'root': {
                u'level': u'DEBUG',
                u'handlers': [u'console', u'loggly']
            }
        }
    }
    

    这是日志模块文档中有关使用 dictconfig 的说明的组合:https://docs.python.org/2/library/logging.config.html

    并深入研究“loggly-python-handler”模块的代码,看看它的构造函数是如何工作的:https://github.com/psquickitjayant/loggly-python-handler/blob/master/loggly/handlers.py

    您也可以直接从控制台进行测试(不要忘记添加您的密钥):

    import logging
    import loggly.handlers
    handler = loggly.handlers.HTTPSHandler(url='https://logs-01.loggly.com/inputs/YOUR_KEY_HERE/tag/python')
    logger = logging.getLogger(u'root')
    logger.addHandler(handler)
    logger.warning("test loggly connection")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-18
      • 2017-06-04
      • 2016-08-15
      • 1970-01-01
      • 2011-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多