我不知道为什么它不起作用,但是我可以说出它是怎么做的。
首先,你不需要设置app.logger的级别。因此删除此行
app.logger.setLevel()。
你想要保存异常并为每个视图返回错误页面。在任何地方编写此代码都是很多工作。Flask提供了一种执行此操作的方法。定义这样的错误处理程序方法。
@app.errorhandler(500) def internal_error(exception): app.logger.error(exception) return render_template('500.html'), 500每当视图引发异常时,都会调用此方法并将异常作为参数传递。Python日志记录提供了异常方法,该方法用于保存对异常的完整追溯。
由于这可以处理所有异常,因此你甚至无需将代码放在try / except块中。但是,如果你想在调用错误处理程序之前执行某些操作(例如,回滚会话或事务),请执行以下操作:
try: #pre except: #pre raise
如果你希望为日志文件中的每个条目添加日期和时间,则可以使用以下代码(代替问题中提供的类似代码)。
if app.debug is not True: import logging from logging.handlers import RotatingFileHandler file_handler = RotatingFileHandler('python.log', maxBytes=1024 * 1024 * 100, backupCount=20) file_handler.setLevel(logging.ERROR) formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") file_handler.setFormatter(formatter) app.logger.addHandler(file_handler)


