zoukankan      html  css  js  c++  java
  • logging模块初识

    前言:为什么要写log日志?

      1.为了排错

      2.用于数据分析

    一、logginz模块常用用途:

    1.记录用户的行为 - 数据分析
    2.记录用户的行为 - 操作审计
    3.排查代码中的错误

    二、logging输出的内容是有等级的(升序),默认处理warning级别以上的所有信息

    logging.debug('debug msg')       # 调试
    logging.info('info msg')         # 信息
    logging.warning('warning msg')   # 警告
    logging.error('error msg')       # 错误
    logging.critical('critical msg') # 批判性的

    三、可以通过灵活配置日志级别,日志格式,输出位置等参数,使打印的日志更清晰易懂

    当我们只想将日志输出到屏幕时:

    import logging
    logging.basicConfig( format='%(asctime)s - %(name)s - %(levelname)s[%(lineno)d] -%(module)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S %p',
       level=logging.DEBUG # 因为默认只输出warning级别以上,所以在这里我们可以增加日志输出的级别
    )

    # 输出到屏幕:
    logging.debug('debug msg test')
    logging.warning('warning msg test')
    logging.error('error msg test')
     

    我们更多的是想要将日志写入文件:

    # 输出到文件中并且设置可写入的等级:默认追加形式
    import logging
    logging.basicConfig( format='%(asctime)s - %(name)s - %(levelname)s[%(lineno)d] -%(module)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S %p', filename='temp.log', # 在这里定义要写入的文件名,默认为当前路径 level=logging.DEBUG ) logging.debug('debug msg 调试 test') logging.warning('warning 警告 msg test') logging.error('error msg 错误 test') logging.critical('critical msg 批判 test')

    当你写入文件后,你发现文件中竟然会出现乱码,所以必须解决这个问题。

    而同时你又想同时输入多个文件时:

    # 同时向多个文件输入并解决乱码问题   和   向屏幕输出
    import logging
    fh = logging.FileHandler('temp.log', encoding='utf-8') # 文件1 fh2 = logging.FileHandler('temp2.log', encoding='utf-8') # 文件2 sh = logging.StreamHandler() # 向屏幕输出 logging.basicConfig( format='%(asctime)s - %(name)s - %(levelname)s[%(lineno)d] -%(module)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S %p', level=logging.DEBUG, handlers=[fh, fh2, sh] # 添加文件1、文件2、向屏幕输出的变量名 ) logging.debug('debug msg 调试 test') logging.warning('warning 警告 msg test') logging.error('error msg 错误 test') logging.critical('critical msg 批判 test')

    四、日志的拆分

    import time
    from logging import handlers
    
    # 按时间切分
    fh = handlers.TimedRotatingFileHandler(filename='time_split.log', when='s', interval=5, encoding='utf-8')
    
    # 按大小切分
    rh = handlers.RotatingFileHandler('room_split.log', maxBytes=1012, backupCount=5)
    
    # 输出到屏幕
    sh = logging.StreamHandler()
    
    logging.basicConfig(
        format='%(asctime)s - %(name)s - %(levelname)s[%(lineno)d] -%(module)s:  %(message)s',
        datefmt='%Y-%m-%d %H:%M:%S %p',
        level=logging.DEBUG,
        handlers=[fh, rh, sh]
    )
    
    for i in range(30):
        time.sleep(1)
        logging.debug('debug msg 调试 test')
        logging.warning('warning 警告 msg test')
        logging.error('error msg 错误 test')
        logging.critical('critical msg 批判 test')
  • 相关阅读:
    python 正则表达式练习题
    python2与Python3的区别
    Python :生成一个1到50的大字符串,每个数字之间有个空格 1 2 3 4 ..........50
    关于实现今天到一年中任意一天两者之间的天数差的计算
    Window下pip的安装
    Pycharm中Git、Github的简单使用和配置
    Python中字符串操作函数string.split('str1')和string.join(ls)
    实现无密码远程登陆另一台机器
    我的第一篇博客
    String类型转List<Integer>
  • 原文地址:https://www.cnblogs.com/GOD-L/p/13369201.html
Copyright © 2011-2022 走看看