web-dev-qa-db-ja.com

logging.config.dictConfigの完全な例はどこにありますか?

dictConfig を使用したいのですが、ドキュメントは少し抽象的です。 dictConfigで使用される辞書の具体的なコピー+貼り付け可能な例はどこにありますか?

102
David Wolever

ここはどう?

{ 
    '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
        },
    } 
}
161
Dave

受け入れられた答えは素晴らしいです!しかし、より複雑でないものから始めることができたらどうでしょうか?ロギングモジュールは非常に強力なものであり、ドキュメントは特に初心者にとっては少々圧倒的です。ただし、最初はフォーマッターとハンドラーを構成する必要はありません。必要なものを見つけたら追加できます。

例えば:

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')
32
theotheo

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,
        },
    }
}
2
天才小飞猫