Python日志终止

2024-09-30 01:33:28 发布

您现在位置:Python中文网/ 问答频道 /正文

问题

处理以下情况的最佳方法是什么:将异常记录到控制台、文件等,然后终止程序? 假设我读入一个配置并验证给定的条目是否有意义。如果没有,我想引发InvalidConfigError,记录此错误并终止,因为无法从中恢复

我所做的

try:
    config = validate_config(read_config(cfg_file_path))
except InvalidConfigError:
    logging.getLogger(__name__).exception(f'Config validation failed.')
    exit(1)

思想

当我这样做时(注意raise

try:
    config = validate_config(read_config(cfg_file_path))
except InvalidConfigError:
    logging.getLogger(__name__).exception(f'Config validation failed.')
    raise

我将在控制台日志中获得重复的回溯,因为我将整个事件(包括异常日志调用中的回溯)记录下来,然后再次引发它,这将再次打印整个事件

有更好的方法吗?我觉得出口(1)不是特别好

我的日志配置

version: 1
disable_existing_loggers: False
formatters:
  simple:
    format: "%(asctime)s : %(name)-12s : %(levelname)-10s %(message)s"

handlers:
  console:
    class: logging.StreamHandler
    level: DEBUG
    formatter: simple
    stream: ext://sys.stdout

  info_file_handler:
    class: logging.handlers.RotatingFileHandler
    level: INFO
    formatter: simple
    filename: data/logs/info.log
    maxBytes: 10485760 # 10MB
    backupCount: 5
    encoding: utf8

  error_file_handler:
    class: logging.handlers.RotatingFileHandler
    level: ERROR
    formatter: simple
    filename: data/logs/errors.log
    maxBytes: 10485760 # 10MB
    backupCount: 5
    encoding: utf8

root:
  level: DEBUG
  handlers: [console, info_file_handler, error_file_handler]

Tags: 方法nameinfoconfigformatterlogginghandlers记录

热门问题