zoukankan      html  css  js  c++  java
  • logging模塊

    标准三流

     标准输出流
    sys.stdout.write('123 ')
    sys.stdout.write('呵呵 ')
    print('嘻嘻', end='')
    print('嘿嘿', end='')
    print()

    标准错误流
    sys.stderr.write('111111111111111111111111111111111111111111111111111 ')
    sys.stderr.write('222222222222222222222222222222222222222222222222222 ')
    sys.stderr.write('333333333333333333333333333333333333333333333333333 ')

    标准输入流
    print(sys.stdin)

    res = sys.stdin.read(3)
    print(res)
    res = input()
    print(res)
    res = sys.stdin.readline()
    print(res)

    logging模块

    操作日志的模块,在正常的项目中,项目运行的一些打印信息,采用looging打印到文件中,这个过程就称之为 记录日志

    logging配置:格式化输出 1)输出的方式  2)输出的格式 3)输出的位置
    h1 = logging.StreamHandler()
    h2 = logging.FileHandler('d.log')
    logging.basicConfig(
    # filename='my.log',
    # filemode='w',
    # stream=sys.stderr, # 往控制台打印采用具体的输出流
    format='%(asctime)s [%(levelname)s]- %(name)s: %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S',
    level=logging.DEBUG, # 10, 代表DEBUG及DEBUG级别以上都能输出
    handlers=[h1, h2]
    )

    logging.debug("debug")
    logging.info("info")
    logging.warning("warning")
    logging.error("error")
    logging.critical("critical")

    loggin四大成员

     1.新建打印者
    logger = logging.getLogger("Owen")
    
    # 2.创建句柄:输出的位置
    stream_handler = logging.StreamHandler()
    a_file_handler = logging.FileHandler('a.log')
    b_file_handler = logging.FileHandler('b.log')
    
    # 3.打印者绑定句柄
    logger.addHandler(stream_handler)
    logger.addHandler(a_file_handler)
    logger.addHandler(b_file_handler)
    
    # 4.设置格式
    fmt1 = logging.Formatter('%(asctime)s - %(msg)s')
    fmt2 = logging.Formatter('%(asctime)s [%(name)s] - %(msg)s')
    
    # 5.为句柄绑定输出格式
    stream_handler.setFormatter(fmt1)
    a_file_handler.setFormatter(fmt1)
    b_file_handler.setFormatter(fmt2)
    
    logger.critical('msg')

    多输出者

    import logging
    # 1.创建logger
    log1 = logging.getLogger('Owen')
    log2 = logging.getLogger('Zero')
    r_log = logging
    
    # 2.logger设置级别
    log1.setLevel(logging.DEBUG)
    
    # 3.设置句柄
    h1 = logging.StreamHandler()
    
    # 4.设置句柄级别:
    # 1)系统句柄默认级别warning,
    # 2)自定义的句柄级别默认同logger,也可以在logger基础上在加以限制
    h1.setLevel(logging.DEBUG)
    
    # 5.logger添加句柄
    log1.addHandler(h1)
    
    # log1可以打印DEBUG以上的信息,但往不同位置打印,采用不同句柄的二次级别限制
    h2 = logging.FileHandler('c.log')
    h2.setLevel(logging.WARNING)
    log1.addHandler(h2)
    
    
    log1.debug('debug')
    log1.info('info')
    log1.warning('warning')
    log1.error('error')
    log1.critical('critical')

    也可以同時存在多輸出者

    import logging
    # 1.创建logger
    log1 = logging.getLogger('one')
    log2 = logging.getLogger('Zero')
    r_log = logging

    # 2.logger设置级别
    log1.setLevel(logging.DEBUG)

    # 3.设置句柄
    h1 = logging.StreamHandler()

    # 4.设置句柄级别:
    # 1)系统句柄默认级别warning,
    # 2)自定义的句柄级别默认同logger,也可以在logger基础上在加以限制
    h1.setLevel(logging.DEBUG)

    # log1可以打印DEBUG以上的信息,但往不同位置打印,采用不同句柄的二次级别限制
    h2 = logging.FileHandler('c.log')
    h2.setLevel(logging.WARNING)
    log1.addHandler(h2)

    配置文件的使用

    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': ‘’,  # 日志文件
                'maxBytes': 1024*1024*5,  # 日志大小 5M
                'backupCount': 5, #日志文件最大个数
                'encoding': 'utf-8',  # 日志文件的编码
            }
        },
        'loggers': {
            'o_one': {
                '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')










  • 相关阅读:
    Datawhale文化运营 —— 推文排版
    Datawhale文化运营 —— 策划活动
    Datawhale文化运营 —— 选题
    Datawhale文化运营 —— 分析公众号运营
    前端面试——记一次于某司的经历
    Win10+Cent7双系统安装
    梳理 Opengl ES 3.0 (五)shader运行原理
    梳理 Opengl ES 3.0 (三)顶点坐标变换
    梳理 Opengl ES 3.0 (二)剖析一个GLSL程序
    梳理 Opengl ES 3.0 (一)宏观着眼
  • 原文地址:https://www.cnblogs.com/duGD/p/10871809.html
Copyright © 2011-2022 走看看