dictConfig を使用したいのですが、ドキュメントは少し抽象的です。 dictConfig
で使用される辞書の具体的なコピー+貼り付け可能な例はどこにありますか?
ここはどう?
{
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'standard': {
'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s'
},
},
'handlers': {
'default': {
'level': 'INFO',
'formatter': 'standard',
'class': 'logging.StreamHandler',
'stream': 'ext://sys.stdout', # Default is stderr
},
},
'loggers': {
'': { # root logger
'handlers': ['default'],
'level': 'INFO',
'propagate': False
},
'my.packg': {
'handlers': ['default'],
'level': 'WARNING',
'propagate': False
},
'__main__': { # if __== '__main__'
'handlers': ['default'],
'level': 'DEBUG',
'propagate': False
},
}
}
受け入れられた答えは素晴らしいです!しかし、より複雑でないものから始めることができたらどうでしょうか?ロギングモジュールは非常に強力なものであり、ドキュメントは特に初心者にとっては少々圧倒的です。ただし、最初はフォーマッターとハンドラーを構成する必要はありません。必要なものを見つけたら追加できます。
例えば:
import logging.config
DEFAULT_LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'loggers': {
'': {
'level': 'INFO',
},
'another.module': {
'level': 'DEBUG',
},
}
}
logging.config.dictConfig(DEFAULT_LOGGING)
logging.info('Hello, log')
Django v1.11.15 以下のデフォルト設定が見つかりました。
DEFAULT_LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'Django.utils.log.RequireDebugFalse',
},
'require_debug_true': {
'()': 'Django.utils.log.RequireDebugTrue',
},
},
'formatters': {
'Django.server': {
'()': 'Django.utils.log.ServerFormatter',
'format': '[%(server_time)s] %(message)s',
}
},
'handlers': {
'console': {
'level': 'INFO',
'filters': ['require_debug_true'],
'class': 'logging.StreamHandler',
},
'Django.server': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'formatter': 'Django.server',
},
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'Django.utils.log.AdminEmailHandler'
}
},
'loggers': {
'Django': {
'handlers': ['console', 'mail_admins'],
'level': 'INFO',
},
'Django.server': {
'handlers': ['Django.server'],
'level': 'INFO',
'propagate': False,
},
}
}