0
yaml을 사용하여 Python 응용 프로그램에 대한 로깅을 구성하고 있습니다.INFO가 디버그 로그에 기록되는 이유
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
db_ops
모듈에서 I 로깅 상이한 레벨 모두 logger.info
logger.debug
및를 사용한다. 앱을 실행할 때 INFO
이 info.log에 출력되는 동안 INFO
및 DEBUG
메시지가 모두 debug.log에 출력됩니다.
수준에 따라 로그를 다른 파일로 구분하는 올바른 방법은 무엇입니까?
그래서 모든 파일을 동일한 파일에 출력하는 것이 좋습니다. 그런 식으로 서로 다른 파일에 중복 로그가 생기지 않습니까? – ddd
로깅을 사용하는 방법에 따라 달라집니다. 로컬 개발을 위해 DEBUG 레벨을 활성화하는 것이 일반적인 패턴이지만, 노이즈 레벨을 줄이고 중요한 로그 만 (일반적으로 문제)하기 위해 INFO 이상을 프로덕션 환경에 설정하십시오. 그러나 다른 경우 로깅 요구 사항이 다를 수 있습니다. 예를 들어, 오류를 stderr로, 표준 출력을 stdout으로 출력하려고 할 수 있습니다. 그것에 대한 엄격한 규칙이 없습니다. 귀하의 경우 동일한 목적지에 모든 것을 기록하는 것만으로도 괜찮은 것 같습니다. – m1keil