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')










  • 相关阅读:
    python 包管理工具 pip 的配置
    Python 变量作用域 LEGB (下)—— Enclosing function locals
    Python 变量作用域 LEGB (上)—— Local,Global,Builtin
    2020 Java 面试题 小结 (答案慢慢补上,有错误请指出)
    mysql 根据日期(date)做年,月,日分组统计查询
    jvm指令
    正则表达式 分割地址 获取省市区详细地址
    .Net 异常记录
    WCF设计服务协议(一)
    plsql ORA-01789:查询块具有不正确的结果列数
  • 原文地址:https://www.cnblogs.com/duGD/p/10871809.html
Copyright © 2011-2022 走看看