6
我在我的模塊中有以下ColoeredFormatter。python日誌記錄dictConfig自定義格式化程序不被稱爲
但格式化程序沒有被調用。我希望控制檯上有「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,這有點難以找到,所以對於下一代:你可以在「user-defined-objects」部分找到它https://docs.python.org/2/library/logging.config html的#用戶定義的對象 – Hagai