6
Ich habe den folgenden ColoredFormatter in meinem Modul.Python Logging dictConfig benutzerdefinierter Formatierer wird nicht aufgerufen
Aber der Formatierer wird nicht aufgerufen. Ich erwarte "Hi" auf der Konsole, aber ich bekomme "Dies ist eine Info des Root-Loggers".
Ich habe bereits alle .pyc-Dateien gelöscht, aber es hat nicht geholfen.
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)
My Script
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")
ersetzen Können Sie bitte erarbeiten, wie Sie auf diese Informationen bekommen? Ich konnte es nirgendwo finden – Hagai
@Hagai einige Informationen können in der [Python Protokollierung Dokumentation] gefunden werden (https://docs.python.org/3/library/logging.config.html#dictionary-schema-details). – Evert
Danke @Evert, Es war ein bisschen schwer zu finden, also für die nächsten Generationen: Sie finden es im Bereich "Benutzerdefinierte Objekte" https://docs.python.org/2/library/logging.config .html # benutzerdefinierte Objekte – Hagai