【问题标题】:Logging RotatingFileHandler not rotating记录 RotatingFileHandler 不旋转
【发布时间】:2016-07-28 15:26:39
【问题描述】:

我已经实现了一个自定义的 RotatingFileHandler:

class FreezeAwareFileHandler(RotatingFileHandler):
    def emit(self, record):
        try:
            msg = self.format(record)
            stream = self.stream
            stream.write(msg)
            stream.write('\n')
            self.flush()
        except (KeyboardInterrupt, SystemExit): #pragma: no cover
            raise
        except:
            self.handleError(record)

我有这个配置 json 文件(我什至尝试过使用 yaml 并通过类方法指定配置):

{
  "version": 1,
  "disable_existing_loggers": false,

  "formatters": {
    "standard": {
      "format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s",
      "datefmt": "%Y-%m-%d %H:%M:%S"
    }
  },

  "handlers": {
    "freeze_aware_file_handler": {
      "class": "Logging.MyHandler",
      "formatter": "standard",
      "level": "INFO",
      "filename": "logs\\MyLog.log",
      "maxBytes": 1024,
      "backupCount": 10,
      "encoding": "utf8"
    }
  },

  "loggers": {
    "my_module": {
      "level": "INFO",
      "handlers": ["my_handler"],
      "propagate": "no"
    }
  },

  "root": {
    "level": "INFO",
    "handlers": ["my_handler"]
  }
}

这是我用于初始化的代码:

if os.path.exists(path):
        with open(path, 'rt') as f:
            config_json = json.load(f)       
        logging.config.dictConfig(config_json)

    logger = logging.getLogger("my_handler")

我可以正常登录到指定的文件,但它从不旋转。
有人知道我为什么会有这种行为吗?
我正在使用 Python 3.5

【问题讨论】:

    标签: python-3.x logging


    【解决方案1】:

    原来问题真的很简单。 对于旋转文件处理程序,需要在基类的 emit 中显式调用 shouldRollver 和 doRollover 方法。

    def emit(self, record):
            try:
                if self.shouldRollover(record):
                    self.doRollover()
    
                ...
                do any custom actions here
                ...
    
            except:
                self.handleError(record)
    

    【讨论】:

      猜你喜欢
      • 2019-01-09
      • 1970-01-01
      • 2014-02-01
      • 2019-12-06
      • 2023-03-19
      • 2011-03-20
      • 1970-01-01
      • 2015-10-14
      • 2017-04-25
      相关资源
      最近更新 更多