5

Pythonロガーの出力を変更してプロセスIDを表示しようとしています。

私が試した2つの方法:

import logging
FORMAT = "%(asctime)s %(process)s %(thread)s: %(message)s"
logging.basicConfig(format=FORMAT)
logger = logging.getLogger('my_logger')

import logging
FORMAT = "%(asctime)s %(process)s %(thread)s: %(message)s"
logger = logging.getLogger('my_logger')
handler = logger.handlers[0]
handler.setFormatter(logging.Formatter(FORMAT))

灘。最初のものはフォーマットを変更しません。2つ目は、にアクセスしようとするとインデックスエラーをスローしますlogger.handlers[0]

独自のハンドラーを作成するのではなく、デフォルトのハンドラーの形式を変更するだけです。簡単な方法はありますか?

4

1 に答える 1

5

最初のものはフォーマットを変更します

logging.<severity>("message")

つまり、最初のサンプルでフォーマットを設定する場合、個別のロガーインスタンスを取得する必要はなく、loggingそれ自体を使用するだけで済みます。とはいえ、使用している他のモジュールもを使用すると、望ましくない影響が生じる可能性がありますlogging

別のロガーの形式を変更する場合は、次の例を使用できます。

from logging import StreamHandler, Formatter

FORMAT = '%(asctime)-15s %(levelname)-6s %(message)s'
DATE_FORMAT = '%b %d %H:%M:%S'
formatter = Formatter(fmt=FORMAT, datefmt=DATE_FORMAT)
handler = StreamHandler()
handler.setFormatter(formatter)
logger = logging.getLogger(__name__)
logger.addHandler(handler)
于 2012-08-05T20:18:20.820 に答える