0
yamlを使用してPythonアプリケーションのログ記録を設定しています。モジュールdb_ops
でINFOがDEBUGログに記録される理由
version: 1
disable_existing_loggers: False
formatters:
standard:
format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
handlers:
console:
class: logging.StreamHandler
level: DEBUG
formatter: standard
stream: ext://sys.stdout
info_file_handler:
class: logging.handlers.RotatingFileHandler
level: INFO
formatter: standard
filename: info.log
maxBytes: 10485760 # 10MB
backupCount: 20
encoding: utf8
error_file_handler:
class: logging.handlers.RotatingFileHandler
level: ERROR
formatter: standard
filename: errors.log
maxBytes: 10485760 # 10MB
backupCount: 20
encoding: utf8
debug_file_handler:
class: logging.handlers.RotatingFileHandler
level: DEBUG
formatter: standard
filename: debug.log
maxBytes: 10485760 # 10MB
backupCount: 20
encoding: utf8
loggers:
db_ops:
level: DEBUG
handlers: [info_file_handler, error_file_handler, debug_file_handler]
propagate: true
、Iは、ログの異なるレベルのlogger.info
とlogger.debug
の両方を使用します。私がアプリを実行すると、INFO
がinfo.logに出力されましたが、INFO
とDEBUG
の両方のメッセージがdebug.logに出力されます。
レベルに基づいてログを別のファイルに分割する正しい方法は何ですか?
だから、すべてのレベルの出力を同じファイルにする方がよいでしょう。あなたは別のファイルに冗長ログを取得しないように? – ddd
これは本当にログをどのように利用するかによって異なります。ローカル開発のためにDEBUGレベルを使用可能にするのは一般的なパターンですが、INFO以上を本番環境に設定してノイズレベルを低減し、重要なログのみ(通常は問題)を持ちます。 しかし、それ以外の場合は、ログのニーズが異なる場合があります。たとえば、エラーをstderrに、標準出力をstdoutに出力することができます。それについての厳しい規則はありません。 あなたの場合は、同じ宛先にすべてをロギングするだけでうまくいくように思えます。 – m1keil