• python日志模块-Logging


    日志配置

    一般日志配置

    为了在控制台规范的打印

    import logging
    
    # 日志配置
    logging.basicConfig(level=logging.INFO, format='[%(asctime)s] - %(levelname)s in %(filename)s: %(message)s')
    
    # 获取日志器
    logger = logging.getLogger(__name__)
    

    文件日志配置

    写入文件的日志配置。

    1. 旋转日志配置

    写入文件,并且可以规定最大大小,自动滚动删除日志。

    from logging.handlers import RotatingFileHandler
    import logging
    
    # Handler类,旋转文件日志,日志文件名,100MB,10个文件滚动
    handler = RotatingFileHandler(filename='logs.log', maxBytes=100 * 1024 * 1024, backupCount=10)
    # Formatter类
    formatter = logging.Formatter('[%(asctime)s] - %(levelname)s in %(filename)s: %(message)s')
    handler.setFormatter(formatter)  # 添加格式化实例
    # 获取日志器
    logger = logging.getLogger(__name__)
    logger.addHandler(handler)
    logger.setLevel(logging.INFO)  # 设置告警等级
    

    2. 控制台打印日志

    可以同时写文件也在控制台打印,主要是看选择哪些handler。

    console = logging.StreamHandler()
    logger.addHandler(console)  # 额外添加一个handler
    

    scrapy写文件通用日志配置

    import logging
    from scrapy.utils.log import configure_logging
    
    configure_logging(install_root_handler=False)
    logging.basicConfig(
        filename='scrapy_log.txt',
        format='%(levelname)s: %(message)s',
        level=logging.INFO
    )
    

    日志打印

    等级依次增高

    logging.debug('debug message')
    logging.info('info message')
    logging.warn('warn message')
    logging.error('error message')
    logging.critical('critical message')
    

    常用例子

    import logging
    import os
    from logging.handlers import RotatingFileHandler
    
    
    # 日志路径
    LOG_PATH = 'log/'
    
    
    # 日志等级
    LOG_LEVEL = {
        'DEBUG': logging.DEBUG,
        'INFO': logging.INFO,
        'WARNING': logging.WARNING,
        'ERROR': logging.WARNING,
        'CRITICAL': logging.CRITICAL
    }
    
    
    def set_logger(log_name, level):
        """设置并返回日志器
        :param log_name:
        :param level:
        :return:
        """
        if not os.path.exists(LOG_PATH):
            os.makedirs(LOG_PATH)
        # Handler类,旋转文件日志,日志文件名,100MB,5个文件滚动
        handler = RotatingFileHandler(filename=LOG_PATH + '{}.log'.format(log_name), maxBytes=300 * 1024 * 1024,
                                      backupCount=5, encoding='utf-8')
        # Formatter类
        formatter = logging.Formatter('[%(asctime)s] - %(levelname)s in %(filename)s %(funcName)s: %(message)s')
        handler.setFormatter(formatter)  # 添加格式化实例
        # 获取日志器
        logger = logging.getLogger(log_name)
        logger.addHandler(handler)
    
        logger.setLevel(LOG_LEVEL.get(level, logging.INFO))  # 设置告警等级
        return logger
    
  • 相关阅读:
    [转] 32位 PL/SQL Develope r如何连接64位的Oracle 图解
    UML对象图和包图
    推断的距离1970年1一个月1天从日期数
    Cocos2d-x3.0 RenderTexture(一) 保存
    翻转名单
    Session or Cookie?是否有必要使用Tomcat等一下Web集装箱Session
    【Socket规划】套接字Windows台C语言
    配置主机路由表(route)(两)
    springMVC3得知(五岁以下儿童)--MultiActionController
    JQUERY 选择
  • 原文地址:https://www.cnblogs.com/haoabcd2010/p/11133752.html
Copyright © 2020-2023  润新知