美文网首页Python
python处理logger日志

python处理logger日志

作者: white_study | 来源:发表于2019-03-26 20:08 被阅读0次
前言:

在实际的项目开发过程中,为了准确的定位出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-8
import os
import logging
from 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 logger


if __name__ == "__main__":
    logger = get_logger("my.log")
    logger.debug("debug test")
    logger.info("info test")
    logger.warn("warn test")
    logger.error("error test")

喜欢关注点个赞!

相关文章

网友评论

    本文标题:python处理logger日志

    本文链接:https://www.haomeiwen.com/subject/bjonvqtx.html