• day19


    今日所学:

    logging模块

    操作日志的模块
     日志:日常的流水,将程序运行过程中的状态或数据进行记录,一般都是记录到日志文件中
    在正常的项目中,项目运行的一些打印信息,采用looging打印到文件中,这个过程就称之为 记录日志

    可在logging.basicConfig()函数中通过具体参数来更改logging模块默认行为,可用参数有
    filename:用指定的文件名创建FiledHandler(后边会具体讲解handler的概念),这样日志会被存储在指定的文件中。
    filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。
    format:指定handler使用的日志显示格式。
    datefmt:指定日期时间格式。
    level:设置rootlogger(后边会讲解具体概念)的日志级别

    日志就是记录日常流水,即日志文件
    程序运行过程当中的数据,优化程序,跟好的服务用户
    导入模块
    import logging
    输出日志
    logging.info('info') # 常规信息 20
    logging.debug("debug") # 调试信息 10
    logging.warning("warning") # 警告信息 30
    logging.error("error") # 错误信息 40
    logging.critical("critical") # 严重错误 50 fatal一样
    用数字来表示级别,数字越大级别越高 默认级别为warning,对应数字为30
    五种打印级别信息,级别本身没有代表信息重要性,只表示它打印的给它附属的,没有实际意义
    1,日志被打印到控制台
    2,日志输出的格式为级别
    3,日志生成器名称,日志消息
    日志的配置:
    loggin 四大成员
    logging .basicConfig() 函数中通过具体参数来更改logging模块默认行为,可用参数有
    1 新建打印者
    logger=logging.getLogger('owen') 生成器 loggin.getLogger('日志对象1') #logger:产生日志的对象
    2, 创建句柄:输出的位置
    logger.critical('msg')
    ster_hand = logging.StreamHandler() 控制台句柄 用一个名字接受控制台句柄
    Handler:接收日志然后控制打印到不同的地方,FileHandler用来打印到文件中,StreamHandler用来打印到终端
    a_file_hand = logging.FileHandler('a.log') 文件句柄 如果有中文 handler1 = logging.FileHandler("文件名1",encoding="utf-8")
    b_file_hand = logging.FileHandler('b.log') 文件句柄 如果有中文 handler1 = logging.FileHandler("文件名2",encoding="utf-8")
    3.打印者绑定句柄
    logger.addHandler(ster_hand ) 绑定生成器
    logger.addHandler(a_file_hand) 绑定文件句柄
    logger.addHandler(b_file_hand) 绑定文件句柄
    设置格式
    fmt1 = logging.Formatter('%(asctime)s-%(msg)s') Formatter对象:可以定制不同的日志格式对象,然后绑定给不同的Handler对象使用,以此来控制不同的Handler的日志格式
    fmt2 = logging.Formatter('%(asctime)s [%(name)s]-%(msg)s')
    为句柄绑定输出格式
    ster_hand.setFormatter(fmt1) 绑定格式化对象
    a_file_hand.setFormatter(fmt1) 绑定格文件句柄
    b_file_hand.setFormatter(fmt2) 绑定文件句柄

    logger.critical('msg') 测试 及输出日志
    logging.info('info') 常规信息 20
    logging.debug("debug") 调试信息 10
    logging.warning("warning") 警告信息 30
    logging.error("error") 错误信息 40
    logging.critical("critical")
    1.配置
    LOGGING_DIC = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
    'o_fmt1': {
    'format': '%(name)s:%(asctime)s - %(message)s'
    },
    'o_fmt2': {
    'format': '%(name)s:%(asctime)s [%(levelname)s] - %(message)s'
    }
    },
    'filters': {},
    'handlers': {
    'o_cmd': {
    'level': 'DEBUG', 控制台级别
    'class': 'logging.StreamHandler', 控制台句柄
    'formatter': 'o_fmt1' 控制台格式
    },
    'o_file': {
    'level': 'WARNING', 文件中级别
    'class': 'logging.handlers.RotatingFileHandler', 文件最多存的字节数
    'formatter': 'o_fmt2', 文件格式
    'filename': r'F:python8期课堂内容day20代码part4logging.log', 日志文件 路径
    'maxBytes': 1024*1024*5, 日志大小 5M
    'backupCount': 5, 日志文件最大个数
    'encoding': 'utf-8', 日志文件的编码
    }
    },
    'loggers': {
    'o_owen': {
    'level': 'DEBUG', 级别
    'handlers': ['o_cmd', 'o_file']
    },
    'o_zero': {
    'level': 'DEBUG',
    'handlers': ['o_file']
    }
    }
    }

    2.加载配置
    import logging.config
    logging.config.dictConfig(LOGGING_DIC)


    3.使用
    log = logging.getLogger('o_owen')
    log.warning('123')
  • 相关阅读:
    iOS NSNotificationCenter 最基本使用
    iOS SDK 从配置文件里读SDK。转化成class 可同时加载多个SDK
    NSString json 车NSDictionary
    在C#中使用.NET SDK创建控制
    推荐几款制作网页滚动动画的 JavaScript 库
    CSS选择器、优先级与匹配原理
    为ASP.NET控件加入快捷菜单
    如何使用ASP.NET开发基于推技术的聊天室?
    ASP.NET Web API queryString访问的一点总结
    ASP.net 控件实现数据级联
  • 原文地址:https://www.cnblogs.com/Fzhiyuan/p/10841626.html
Copyright © 2020-2023  润新知