Настройка ведения журнала Python Loggly с использованием dictconfig

Я хочу попробовать Loggly в своем новом приложении Python PaaS, так как я обычно пишу код для сервера Linux и просто использую стандартный обработчик вращающихся файлов. Это представляет собой проблему, поскольку их задокументированная конфигурация охватывает только использование файла .conf, и поскольку у них есть несколько пользовательских методов в их предпочтительном обработчике HTTPS, есть несколько приемов для его настройки любым другим способом.

Я использовал вложенные файлы .py для обработки конфигурации для остальной части моего приложения и не хотел ничего менять, и похоже, что в документации предпочтение отдавалось методу dictconfig.

Итак, как решить эту проблему?


person Chaffelson    schedule 27.07.2015    source источник


Ответы (1)


Этот подход использует метод dictconfig стандартного модуля ведения журнала Python и был протестирован в версии 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")
person Chaffelson    schedule 27.07.2015