zoukankan      html  css  js  c++  java
  • logging模块配置笔记

    logging模块配置笔记

    log文件的路径

    #判断在当前的目录下是否有一个logs文件夹。没有则创建
    log_dir = os.path.dirname(os.path.dirname(__file__))+'/logs'
    if not os.path.exists(log_dir):
        os.mkdir(log_dir)
    

    设定log文件名

    #在上述的文件夹生成web.log文件
    today=datetime.datetime.now().strftime("%Y%m%d")
    log_path = os.path.join(log_dir, f'test_{today}.log')
    

    dictConfig通用参数配置

    version版本号
    'version': 1.0#固定值1.0
    
    formatters日志格式设置
     'format': formatter的格式,字符串,比如'%(levelname)s-%(message)s'
     'datefmt': 日期的输出格式,字符串,比如'%Y-%m-%d %H:%M:%S'
    
    然后看下面一个配置
    'formatters': {
            'detail': {#detail自定义一个格式名字
                'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s',
                'datefmt': "%Y-%m-%d %H:%M:%S"
            },
            'simple': {#同detail自定义一个格式名字,这里定义另一种格式
                'format': '%(name)s - %(levelname)s - %(message)s',
            },
        }
    
    handlers日志格式设置
    然后看下面一个配置
        'handlers': {
            'console': {#console是自定义的handlers名字
                'class': 'logging.StreamHandler',#构造handler使用的类,字符串,必须使用全路径
                'level': 'INFO',#级别
                'formatter': 'detail'#上面的detail格式
            },
            'file': {#file是自定义的handlers名字
                'class': 'logging.handlers.RotatingFileHandler',
                'maxBytes': 1024 * 1024 * 5,#每个日志文件最大5M,超过之后重新命名一个文件
                'backupCount': 10,#最多备份10个日志文件,
                'filename': log_path,#上面定义的log文件名
                'level': 'INFO',
                'formatter': 'detail',
                'encoding': 'utf-8',
            },
        
    
    loggers

    必须指定一个级别和handlers列表

        'loggers': {
            'crawler': {#crawler是自定义的日志对象名字
                'handlers': ['console', 'file'],#输出方式
                'level': 'DEBUG',#级别
            },
            'parser': {
                'handlers': ['file'],#输出方式
                'level': 'INFO',#级别
            }
        }
    

    以上日志配置综合

    log_config = {
        'version': 1.0,
        'formatters': {
            'detail': {
                'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s',
                'datefmt': "%Y-%m-%d %H:%M:%S" #如果不加这个会显示到毫秒。
            },
            'simple': {
                'format': '%(name)s - %(levelname)s - %(message)s',
            },
        },
        'handlers': {
            'console': {
                'class': 'logging.StreamHandler',#日志打印到屏幕显示的类。
                'level': 'INFO',
                'formatter': 'detail'
            },
            'file': {
                'class': 'logging.handlers.RotatingFileHandler',#日志打印到文件的类。
                'maxBytes': 1024 * 1024 * 5, #单个文件最大内存
                'backupCount': 10, #备份的文件个数
                'filename': log_path, #日志文件名
                'level': 'INFO',# 日志等级
                'formatter': 'detail', #调用上面的哪个格式
                'encoding': 'utf-8', #编码
            },
        },
        'loggers': {
            'crawler': {
                'handlers': ['console', 'file'],#打印屏幕和写入文件
                'level': 'DEBUG',#只显示错误的log
            },
            'parser': {
                'handlers': ['file'],
                'level': 'INFO',
            },
            'other': {
                'handlers': ['console', 'file'],
                'level': 'INFO',
            },
            'storage': {
                'handlers': ['file'],
                'level': 'INFO',
            }
        }
    }
    

    创建日志对象使用

    1.通过调用dictConfig(config)方法进行配置,config对象为一个dict

    log_conf.dictConfig(log_config)
    

    2.生成不同的日志对象

    crawler = logging.getLogger('crawler')
    parser = logging.getLogger('parser')
    

    3.打印不同级别的log

    常用的两种

    crawler.error(错误信息)
    crawler.info(字符串)
    
  • 相关阅读:
    Java基础03 基本程序设计结构
    Java基础02 开发环境搭建
    Java基础01 Java简介
    手动获取Spring上下文和Bean对象
    SAX解析XML
    Hbuilderx换行问题(属性合并一行展示)
    hbuilderx快捷键、回到上一步、回到上次编辑处
    查看jQuery版本号
    【基础篇】js对本地文件增删改查
    【基础篇】js对本地文件增删改查--查
  • 原文地址:https://www.cnblogs.com/c-x-a/p/9453101.html
Copyright © 2011-2022 走看看