zoukankan      html  css  js  c++  java
  • 常用内置模块(二)——logging模块

    logging模块

    一、logging作用

       1. 控制日志级别
       2. 控制日志格式
       3. 控制输出的目标为文件

    二、日志级别

    1 logging.debug('debug日志') # 10
    2 logging.info('info日志') # 20
    3 logging.warning('warning日志') #30
    4 logging.error('error日志')#40
    5 logging.critical('critical日志') #50

    三、示例

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

    四、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',
            },
        },
    }
    logging.config.dictConfig(settings.LOGGING_DIC)
    
    logger1=logging.getLogger('用户交易')
    #logger1-> fh1,fh2,ch
    logger1.info('复古风刚刚兴起')
    
    logger2=logging.getLogger('用户权限')
    #logger2-> fh1,fh2,ch
    logger2.error('TOm没有执行权限')
    调用log配置字典
    博客内容仅供参考,部分参考他人优秀博文,仅供学习使用
  • 相关阅读:
    多测师肖老师_git版本控制器之使用(3.2.3)
    多测师肖老师_linux之yum源解决方法(2.3)
    快速排序c++实现
    算法复杂性表示
    lua学习测试脚本
    获取程序当前文件夹 c#
    C#读写注册表 二进制写入
    [转]c# Config修改
    C# 文件版本信息读取
    lua中的table
  • 原文地址:https://www.cnblogs.com/linagcheng/p/9456885.html
Copyright © 2011-2022 走看看