点击上方“码农小黑屋”,选择“置顶公众号” 来源: white_study :https://www.jianshu.com/p/af2b7eae2407 关键时刻,第一时间送达!

fddab85992d8a03354e91a9f8b1e0252.png

详解

640

在实际的项目开发过程中,为了准确的定位出bug,需要对错误进行日志记录,这里简要记录一下使用python的logging模块实现日志的记录。

logger的常见使用

1.日志等级
2.实际开发中的日志记录
3.日志输出到屏幕
4.日志输入到文件
5.完整代码实例

日志的等级:

1.等级排序:
   debug  <  info < warn < error < fatal
2.各等级的含义:
  1.debug: 级别最低,用户开发过程中的调试
  2.info:打印程序运行是的正常的信息,用于替代print输出
  3.warn: 打印警告信息,不影响程序的运行
  4.error: 程序运行出错,可以修复,常用在except异常捕获之后
  5.fatal:非常严重,无法修复,程序继续运行的话后果非常严重
3.使用注意事项:
   设置了日志等级后,调用比等级低的日志记录函数则不会输出

实际开发中的日志记录

1.在开发阶段,便于调试,会将日志信息输出到控制台2.项目上线后,便于后期的错误定位,会将日志记录到log文件

日志输出到屏幕

logging.StreamHandler()

日志输入到文件

logging.handlers.TimedRotatingFileHandler(filename, when, backupCount, encoding)
各参数含义:1.filename:log文件名2.when:间隔的时间单位
S:秒
M:分
H:小时
D:天、
W:每星期(interval==0时代表星期一)
midnight: 每天凌晨3.backupCount:备份文件的个数,若超过该值,就会自动删除4.encoding:编码格式,一般为:utf-8

完整代码实例

# coding:utf-8import osimport loggingfrom logging import handlers# 日志根路径
LOG_ROOT = "I:/"def get_logger(log_filename, level=logging.DEBUG, when='midnight', back_count=0):"""
:brief 日志记录
:param log_filename: 日志名称
:param level: 日志等级
:param when: 间隔时间:
S:秒
M:分
H:小时
D:天
W:每星期(interval==0时代表星期一)
midnight: 每天凌晨
:param back_count: 备份文件的个数,若超过该值,就会自动删除
:return: logger
"""
logger = logging.getLogger(log_filename)
logger.setLevel(level)
log_path = os.path.join(LOG_ROOT, "logs")if not os.path.exists(log_path):
os.mkdir(log_path)
log_file_path = os.path.join(log_path, log_filename)# log输出格式
formatter = logging.Formatter('%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s')# 输出到控制台
ch = logging.StreamHandler()
ch.setLevel(level)# 输出到文件
fh = logging.handlers.TimedRotatingFileHandler(
filename=log_file_path,
when=when,
backupCount=back_count,
encoding='utf-8')
fh.setLevel(level)# 设置日志输出格式
fh.setFormatter(formatter)
ch.setFormatter(formatter)# 添加到logger对象里
logger.addHandler(fh)
logger.addHandler(ch)return loggerif __name__ == "__main__":
logger = get_logger("my.log")
logger.debug("debug test")
logger.info("info test")
logger.warn("warn test")
logger.error("error test")

b85981e98033a6c3328a78938b258f8e.png

喜欢本篇内容请点个“在看”

Logo

鸿蒙生态一站式服务平台。

更多推荐