zoukankan      html  css  js  c++  java
  • (常用)loogging模块及(项目字典)

    loogging模块
    '''
    import logging
    logging.debug('debug日志') # 10
    logging.info('info日志')   # 20
    logging.warning('warning日志') #30
    logging.error('error日志')#40
    logging.critical('critical日志') #50
     
    # 1. 能够同时往终端与文件中记录日志
    # 2. 能够修改字符串编码
    import logging
    # 1. logger对象: 负责生产各种级别的日志
    logger1 = logging.getLogger('用户交易')  # 日志名用来标识日志的与什么业务有关
    # 2. filter对象: 过滤日志
    # 3. handler对象: 控制日志输出目标位置
    fh1 = logging.FileHandler('a1.log',encoding='utf-8')
    fh2 = logging.FileHandler('a2.log',encoding='utf-8')
    ch = logging.StreamHandler()
    # 4. formmater对象
    formatter1 = logging.Formatter(
        fmt='%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',
        datefmt='%Y-%m-%d %H:%M:%S %p'
    )
    formatter2 = logging.Formatter(
        fmt='%(asctime)s - %(levelname)s :  %(message)s',
        datefmt='%Y-%m-%d %H:%M:%S %p'
    )
    # 5. 绑定logger对象与handler对象
    logger1.addHandler(fh1)
    logger1.addHandler(fh2)
    logger1.addHandler(ch)
    # 6. 绑定handler对象与formatter对象
    fh1.setFormatter(formatter1)
    fh2.setFormatter(formatter1)
    ch.setFormatter(formatter2)
    # 7. 设置日志级别,有logger对象与handler对象两层关卡,必须都放行最终日志才会放行,通常二者级别相同
    logger1.setLevel(10)
    fh1.setLevel(10)
    fh2.setLevel(10)
    ch.setLevel(10)
    # 8. 使用logger对象产生日志
    logger1.info('alex给egon转账1个亿')
    import os
    # 日志相关的配置
    BASE_DIR=os.path.dirname(os.path.dirname(__file__))
    standard_format = '%(asctime)s - task:%(name)s - %(filename)s:%(lineno)d -'
                      ' %(levelname)s : [%(message)s]'
    simple_format = '%(filename)s:%(lineno)d - %(levelname)s : [%(message)s]'
    fh1_path = os.path.join(BASE_DIR,'log','a1.log')
    fh2_path = os.path.join(BASE_DIR,'log','a2.log')
     
    项目配置
    # log配置字典
    LOGGING_DIC = {
        'version': 1,
        'disable_existing_loggers': False,
        'formatters': {
            'standard': {
                'format': standard_format
            },
            'simple': {
                'format': simple_format
            },
        },
        'filters': {},
        'handlers': {
            #打印到终端的日志
            'ch': {
                'level': 'DEBUG',
                'class': 'logging.StreamHandler',  # 打印到终端
                'formatter': 'simple'
            },
            #打印到a1.log文件的日志
            'fh1': {
                'level': 'DEBUG',
                'class': 'logging.FileHandler',  # 保存到文件
                'formatter': 'standard',
                'filename': fh1_path,  # 日志文件的路径
                'encoding': 'utf-8',  # 日志文件的编码,再也不用担心中文log乱码了
            },
            # 打印到a2.log文件的日志
            'fh2': {
                'level': 'DEBUG',
                'class': 'logging.FileHandler',  # 保存到文件
                'formatter': 'simple',
                'filename': fh2_path,  # 日志文件的路径
                'encoding': 'utf-8',  # 日志文件的编码,再也不用担心中文log乱码了
            },
        },
        'loggers': {
            '': {
                'handlers': ['fh1', 'fh2', 'ch'],
                'level': 'DEBUG',
            },
        },
    }
     
    import logging.config
    from conf import settings
    def get_logger(name):
        logging.config.dictConfig(settings.LOGGING_DIC)
        logger1=logging.getLogger(name)
        return logger1
  • 相关阅读:
    内存分配小问题
    从MACHINE_START开始
    Linux驱动学习(二)
    9,斐波那契数列 6,旋转数组找最小 8青蛙跳台阶 JAVA实现
    数组练习题
    类的练习
    for循环练习题
    封装练习题
    Facebook成为Apache基金会的白金赞助商
    Visual Studio 2010
  • 原文地址:https://www.cnblogs.com/3sss-ss-s/p/9456707.html
Copyright © 2011-2022 走看看