• Python输出日志信息


    在Python中要输出日志信息有2种方式:
    1.调用内置的print()方法,该方式只能将信息输出到控制台
    2.使用logging模块将日志信息输出到文件中(logging模块默认也是输出到控制台:标准错误输出流)
    logging模块默认使用stderror

    输出到控制台

    使用print()方法:

    print('日志信息')
    

    使用logging模块的默认配置(日志级别为WARNING,输出到标准错误输出流):

    import logging
    # 当没有明确配置输出到文件时,信息将会被输出到标准错误输出流中
    logging.debug('debug信息')
    logging.info('info信息')
    # logging模块的默认日志级别为WARNING,所以只会输出大于等于WARNING级别日志日志
    # logging模块的日志级别等级:DEBUG(10) < INFO(20) < WARNING(30) < ERROR(40) < FATAL或CRITICAL(50)
    logging.warning('warning信息')
    logging.error('error信息')
    logging.critical('critical信息')
    

    使用logging模块明确配置输出到控制台(标准输出流):

    log = logging.getLogger('Console')
    log.setLevel(logging.INFO)
    fmt = logging.Formatter('%(asctime)s %(thread)d %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
    console_handler = logging.StreamHandler(sys.stdout) # 明确指定日志输出到标准输出流中
    console_handler.setFormatter(fmt)
    log.addHandler(console_handler)
    log.info(msg)
    

    输出到文件

    在项目中更为普遍的使用方式是将日志信息输出到文件中,当然同时也可以输出到控制台便于调试时查看。

    首先封装一个实现日志输出的模块(logger.py):

    # -*- coding: utf-8 -*-
    
    import sys
    import logging
    from logging import handlers
    
    # 日志级别关系映射
    level_relations = {
        'debug': logging.DEBUG,
        'info': logging.INFO,
        'warning': logging.WARNING,
        'error': logging.ERROR,
        'crit': logging.CRITICAL
    }
    
    def _get_logger(filename, level='info'):
        # 创建日志对象
        log = logging.getLogger(filename)
        # 设置日志级别
        log.setLevel(level_relations.get(level))
        # 日志输出格式
        fmt = logging.Formatter('%(asctime)s %(thread)d %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
        # 输出到控制台
        console_handler = logging.StreamHandler(sys.stdout)
        console_handler.setFormatter(fmt)
        # 输出到文件
        # 日志文件按天进行保存,每天一个日志文件
        file_handler = handlers.TimedRotatingFileHandler(filename=filename, when='D', backupCount=1, encoding='utf-8')
        # 按照大小自动分割日志文件,一旦达到指定的大小重新生成文件
        # file_handler = handlers.RotatingFileHandler(filename=filename, maxBytes=1*1024*1024*1024, backupCount=1, encoding='utf-8')
        file_handler.setFormatter(fmt)
    
        log.addHandler(console_handler)
        log.addHandler(file_handler)
        return log
    
    # 明确指定日志输出的文件路径和日志级别
    logger = _get_logger('../logs/test.log', 'info')
    

    其次,在要进行日志输出的地方引入logger模块中的logger对象即可:

    from logger import logger
    
    if __name__ == '__main__':
        logger.info('日志输出测试')
    

    关于logging模块的介绍详见:logging --- Python 的日志记录工具

    【参考】
    https://www.cnblogs.com/nancyzhu/p/8551506.html Python + logging 输出到屏幕,将log日志写入文件

  • 相关阅读:
    Windows7平台下gitblit服务器安装
    使用JDK的zip编写打包工具类
    MongoDB和Java(7):MongoDB用户管理
    MongoDB和Java(6):Spring Data整合MongoDB副本集、分片集群
    MongoDB和Java(5):Spring Data整合MongoDB(注解配置)
    MongoDB和Java(4):Spring Data整合MongoDB(XML配置)
    MongoDB和Java(3):Java操作MongoB
    MongoDB和Java(2):普通用户启动mongod进程
    Spring MVC 执行原理
    选择性配置-ConditionalOnProperty
  • 原文地址:https://www.cnblogs.com/nuccch/p/16014069.html
Copyright © 2020-2023  润新知