文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
记录日志到文件中
通过电子邮件来接收错误提示非常棒,但在其他场景下,有时候就有些不足了。有些错误条件既不是一个 Python 异常又不是重大事故,但是他们在调试的时候也是有足够用处的。为此,我将会为本应用维持一个日志文件。
为了启用另一个基于文件类型 RotatingFileHandler 的日志记录器,需要以和电子邮件日志记录器类似的方式将其附加到应用的 logger 对象中。
# ...
from logging.handlers import RotatingFileHandler
import os
# ...
if not app.debug:
# ...
if not os.path.exists('logs'):
os.mkdir('logs')
file_handler = RotatingFileHandler('logs/microblog.log', maxBytes=10240,
backupCount=10)
file_handler.setFormatter(logging.Formatter(
'%(asctime)s %(levelname)s: %(message)s [in %(pathname)s:%(lineno)d]'))
file_handler.setLevel(logging.INFO)
app.logger.addHandler(file_handler)
app.logger.setLevel(logging.INFO)
app.logger.info('Microblog startup')
日志文件的存储路径位于顶级目录下,相对路径为 logs/microblog.log
,如果其不存在,则会创建它。
RotatingFileHandler 类非常棒,因为它可以切割和清理日志文件,以确保日志文件在应用运行很长时间时不会变得太大。 本处,我将日志文件的大小限制为 10KB,并只保留最后的十个日志文件作为备份。
logging.Formatter 类为日志消息提供自定义格式。 由于这些消息正在写入到一个文件,我希望它们可以存储尽可能多的信息。 所以我使用的格式包括时间戳、日志记录级别、消息以及日志来源的源代码文件和行号。
为了使日志记录更有用,我还将应用和文件日志记录器的日志记录级别降低到 INFO
级别。 如果你不熟悉日志记录类别,则按照严重程度递增的顺序来认识它们就行了,分别是 DEBUG
、 INFO
、 WARNING
、 ERROR
和 CRITICAL
。
日志文件的第一个有趣用途是,服务器每次启动时都会在日志中写入一行。 当此应用在生产服务器上运行时,这些日志数据将告诉你服务器何时重新启动过。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论