zoukankan      html  css  js  c++  java
  • day20,日志和正则表达式

                                                                       日志和正则表达式

    import logging 这是记录系统一些信息的模块

    记录日志的输出是有两种方式的

       1 一种是在控制台中打印出日志

       2 一种是在文件中打印出记录的日志

    我们把这两种方式称之为句柄

    在系统中的打印者是可以自己定义的,如果不 自己定义,就会使用系统自带的打印者.

    不过我们一般都是自己定义一个打印者

    在logging中打印的格式是随着自己想要的输出格式来定义格式化

    logging 中的输出分为五种,他们本身是没有什么优先级的,都是通过我自己定义输出的

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

    在打印者 和 句柄 和 输出的格式如下图中所画

    logging模块

    # 操作日志的模块
    # 日志:日常的流水,将程序运行过程中的状态或数据进行记录,一般都是记录到日志文件中
    # 在正常的项目中,项目运行的一些打印信息,采用looging打印到文件中,这个过程就称之为 记录日志
    
    
    import logging
    
    # logging为默认打印者,名字叫root,配置采用以下方式
    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")

    多输出者

    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')
    
    log2.critical('00000')
    
    r_log.critical('00000')

    配置文件的使用

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

    re模块

    # 正则:是有语法的字符串,用来匹配目标字符串的
    
    # 将目标字符串中的所以数字找出
    data = '123abc呵呵'
    
    res = re.findall(r'd', data)  # d就代表数字
    print(res)  # ['1', '2', '3']
  • 相关阅读:
    POJ 3624 Charm Bracelet 简单01背包
    POJ 1426 Find The Multiple BFS
    HDU 2612 Find a way BFS,防止超时是关键
    P3399 丝绸之路(线性二维dp)
    洛谷P1726 上白泽慧音(Tarjan强连通分量)
    codevs1557 热浪(堆优化dijkstra)
    P1462 通往奥格瑞玛的道路(二分答案+最短路)
    洛谷P1330 封锁阳光大学(二分图染色)
    洛谷P1341 无序字母对(欧拉回路)
    洛谷P1613 跑路(最短路+倍增)
  • 原文地址:https://www.cnblogs.com/WBaiC1/p/10841256.html
Copyright © 2011-2022 走看看