• 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')
  • 相关阅读:
    web服务器-Apache
    nginx优化
    nginx下载限速
    nginx-URL重写
    HDU 5358 First One 求和(序列求和,优化)
    HDU 5360 Hiking 登山 (优先队列,排序)
    HDU 5353 Average 糖果分配(模拟,图)
    UVALive 4128 Steam Roller 蒸汽式压路机(最短路,变形) WA中。。。。。
    HDU 5348 MZL's endless loop 给边定向(欧拉回路,最大流)
    HDU 5344 MZL's xor (水题)
  • 原文地址:https://www.cnblogs.com/GOD-L/p/13369201.html
Copyright © 2020-2023  润新知