6
私のモジュールに次のColoeredFormatterがあります。python logging dictConfigカスタムフォーマッタが呼び出されていない
しかし、Formatterは呼び出されません。私はコンソールで "hi"を期待していますが、これは "これはルートロガーの情報です"と表示されます。
すでにすべての.pycファイルを削除しましたが、それは役に立たなかったです。
MyModuleという/ __ init__.py
from MyModule.ColoredFormatter import ColoredFormatter
__all__ = ('ColoredFormatter')
MyModuleという/ ColoredFormatter.py
import logging
class ColoredFormatter(logging.Formatter):
def __init__(self, default):
self.default = default
def format(self, record):
print("hi")
record.msg = "hi"
return self.default.format(record)
私のスクリプト
import logging, logging.config, yaml
conf="""
logging:
version: 1
disable_existing_loggers: true
root:
level: !!python/name:logging.NOTSET
handlers: [console]
handlers:
console:
class: logging.StreamHandler
stream: ext://sys.stdout
formatter: myFormatter
level: !!python/name:logging.NOTSET
formatters:
myFormatter:
class: !!python/name:MyModule.ColoredFormatter
"""
dict = yaml.parse(conf)
logging.config.dictConfig(dict["logging"])
logging.info("This is an info of the root logger")
で
class
を交換しなければならなかったフォーマッタのセクションで、あなたは、この情報を得た方法手の込んだていただけますか?どこでも見つかりませんでした – Hagai@Hagaiいくつかの情報は[Python logging documentation](https://docs.python.org/3/library/logging.config.html#dictionary-schema-details)にあります。 – Evert
ありがとうございます。@Evert、それは次の世代にとっては見つけるのが少し難しかった:「ユーザー定義オブジェクト」のセクションhttps://docs.python.org/2/library/logging.configで見つけることができます.html#user-defined-objects – Hagai