Python日志打印

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_29726869/article/details/81539822

Python日志打印

1.常见用法

import logging
logging.warning('Warning Message')

2.日志输出等级

默认输出级别为Warning,只会输出级别高于30 的日志

Level Numeric value
CRITICAL 50
ERROR 40
WARNING 30
INFO 20
DEBUG 10
NOTSET 0
logging.debug('Debug Message')
logging.info('Info Message')
logging.warning('Warning Message')
logging.error('Error Message')
logging.critical('Critical Message')
#自定义输出级别
logging.log(60, 'My Log Message')

3.日志配置

  • 使用硬编码配置

    import logging
    logging.basicConfig(
       filename='app.log', #配置文件路径,输出日志保存到文件
       level=logging.WARNING, #设置日志输出等级
       format='[%(asctime)s]%(levelname)s:%(message)s') #自定义日志格式
  • 通过配置文件配置

    import logging
    import logging.config
    logging.config.fileConfig('logconfig.ini')

    logconfig.ini 文件内容

    [loggers]
    keys=root
    
    [handlers]
    keys=defaultHandler
    
    [formatters]
    keys=defaultFormatter
    
    [logger_root]
    level=INFO
    handlers=defaultHandler
    qualname=root
    
    [handler_defaultHandler]
    class=FileHandler
    formatter=defaultFormatter
    args=('app.log', 'a')
    
    [formatter_defaultFormatter]
    format=%(levelname)s:%(name)s:%(message)s

4.高级用法

import logging
from logging import handlers


def main():
    #初始化logger
    logger = logging.getLogger()
    #设置日志记录级别
    logger.setLevel(logging.INFO)
    #fmt设置日志输出格式,datefmt设置 asctime 的时间格式
    formatter = logging.Formatter(fmt='[%(asctime)s]%(levelname)s:%(message)s',
                                  datefmt='%m/%d/%Y %I:%M:%S %p')
    #配置日志输出到控制台
    console = logging.StreamHandler()
    console.setLevel(logging.WARNING)
    console.setFormatter(formatter)
    logger.addHandler(console)
    #配置日志输出到文件
    file_logging = logging.FileHandler('app.log')
    file_logging.setLevel(logging.WARNING)
    file_logging.setFormatter(formatter)
    logger.addHandler(file_logging)
    #配置日志输出到文件,限制单个日志文件的最大体积
    file_rotating_file = handlers.RotatingFileHandler('app_rotating.log', maxBytes=1024, backupCount=3)
    file_rotating_file.setLevel(logging.WARNING)
    file_rotating_file.setFormatter(formatter)
    logger.addHandler(file_rotating_file)
    #配置日志输出到文件,在固定的时间内记录日志文件
    file_time_rotating = handlers.TimedRotatingFileHandler("app_time.log", when="s", interval=10, backupCount=5)
    file_time_rotating.setLevel(logging.INFO)
    file_time_rotating.setFormatter(formatter)
    logger.addHandler(file_time_rotating)
    #use
    logger.debug('Debug Message')
    logger.info('Info Message')
    logger.warning('Warning Message')
    logger.error('Error Message')
    logger.critical('Critical Message')
    logging.log(60, 'My Log Message')


if __name__ == '__main__':
    main()

猜你喜欢

转载自blog.csdn.net/qq_29726869/article/details/81539822