zoukankan      html  css  js  c++  java
  • Logging模块封装,打印日志

    Logging模块
    1、什么是日志记录
    记录是跟踪运行时发生的事件的一种手段
    2、日志记录功能
    logging.debug('此功能提供详细信息')
    logging.warning('意外发生')
    logging.error('用于存储异常跟踪')
    logging.info('确认事情正在按计划进行)'
    logging.critical('要执行的主要操作失败)
    3、日志级别
    Info是最低级别,即如果我们配置了“WARNING”的日志,我们的日志文件将包含WARNING,ERROR&CRITICAL的日志。默认日志消息是WARNING
    import logging
    # ------------创建记录器-----------------------------------
    # 创建要记录的日志级别的记录器
    logger = logging.getLogger(__name__)
    logger.setLevel(logging.INFO)

    # 创建日志处理程序
    handler_warn = logging.FileHandler('warning_log.txt')
    handler_warn.setLevel(logging.WARNING)

    # 日志处理程序创建事物
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    handler_warn.setFormatter(formatter)

    # 将日志处理程序记录到记录器
    logger.addHandler(handler_warn)

    4、封装logging模块,封装文件名Logger.py,日志地址F:python_demo est_demologging路径下

    #!/user/bin/env python
    # -*-coding:utf-8 -*-
    import logging, time, os
    # 日志保存本地的路径
    log_path = "F:python_demo est_demologging"


    class Log:
    def __init__(self):
    # 文件的命名
    self.logname = os.path.join(log_path, '%s.log' % time.strftime('%Y_%m_%d'))
    self.logger = logging.getLogger()
    self.logger.setLevel(logging.DEBUG)
    # 日志输出格式
    self.formatter = logging.Formatter('[%(asctime)s] - %(filename)s] - %(levelname)s: %(message)s')

    def __console(self, level, message):
    # 创建一个FileHandler,用于写到本地
    fh = logging.FileHandler(self.logname, 'a', encoding='utf-8') # 这个是python3的
    fh.setLevel(logging.DEBUG)
    fh.setFormatter(self.formatter)
    self.logger.addHandler(fh)
    # 创建一个StreamHandler,用于输出到控制台
    ch = logging.StreamHandler()
    ch.setLevel(logging.DEBUG)
    ch.setFormatter(self.formatter)
    self.logger.addHandler(ch)
    if level == 'info':
    self.logger.info(message)
    elif level == 'debug':
    self.logger.debug(message)
    elif level == 'warning':
    self.logger.warning(message)
    elif level == 'error':
    self.logger.error(message)
    # 这两行代码是为了避免日志输出重复问题
    self.logger.removeHandler(ch)
    self.logger.removeHandler(fh)
    # 关闭文件
    fh.close()

    def debug(self, message):
    self.__console('debug', message)

    def info(self, message):
    self.__console('info', message)

    def warning(self, message):
    self.__console('warning', message)

    def error(self, message):
    self.__console('error', message)


    if __name__ == "__main__":
    log = Log()
    log.info("---测试开始----")
    log.warning("----测试结束----")
  • 相关阅读:
    Oracle client 安装、配置
    js 计算金额是否小于总金额,大于是不能保存
    SQL Server函数与存储过程 计算时间
    sql Server 创建临时表 嵌套循环 添加数据
    SQL Server 事务日志文件已满,收缩日志文件(9002)
    sql Server 2008 数据库自动备份维护计划
    面向对象的三个基本特征:继承、封装、多肽
    MySQL 语句调优
    SQL 多表关联更新
    值类型、引用类型
  • 原文地址:https://www.cnblogs.com/wapn/p/9693182.html
Copyright © 2011-2022 走看看