1

私は通常、Linux サーバーに対してコーディングし、標準のローテーション ファイル ハンドラーを使用するだけなので、新しい PaaS Python アプリで Loggly を試してみたいと思っています。文書化された構成は .conf ファイルの使用のみをカバーしており、優先 HTTPS ハンドラーにいくつかのカスタム メソッドがあるため、他の方法で構成するためのいくつかのトリックがあるため、これは問題を引き起こします。

私はネストされた .py ファイルを使用してアプリケーションの残りの構成を処理しており、変更したくありませんでした。ドキュメントでは dictconfig メソッドが優先されているように見えました。

では、これを解決するにはどうすればよいでしょうか。

4

1 に答える 1

3

このアプローチは、標準の 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")
于 2015-07-27T16:21:12.023 に答える