赞
踩
级别 | 数值 | 描述 | 举例 | |
---|---|---|---|---|
1 | NOTEST | - | 无 | |
2 | DEBUG | 10 | 调试 | 函数调用、变量值 |
3 | INFO | 20 | 一般信息 | 程序入参、执行结果 |
4 | WARNING | 30 | 警告 | 磁盘空间不足、网络连接中断 |
5 | ERROR | 40 | 错误 | 函数调用失败、异常 |
6 | CRITICAL | 50 | 严重错误 | 程序崩溃 |
日志数值越高,日志的级别越高。
日志级别从低到高依次为: NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL
import logging
logging.debug('debug')
logging.info('info')
logging.warning('warning')
logging.error('error')
logging.critical('critical')
执行结果:(默认输出 WARNING 及以上的日志)
结果说明:
logging.basiConfig
进行调整(下面有介绍)import logging
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s %(name)s [%(pathname)s line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%Y-%m-%d %H:%M:%S',
filename='demo.log',
filemode='w')
logging.debug('debug')
logging.info('info')
logging.warning('warning')
logging.error('error')
logging.critical('critical')
执行结果(demo.log)文件:
2024-01-12 21:24:36 root [E:/01 Python 项目/Demo/D01.py line:10] DEBUG debug
2024-01-12 21:24:36 root [E:/01 Python 项目/Demo/D01.py line:11] INFO info
2024-01-12 21:24:36 root [E:/01 Python 项目/Demo/D01.py line:12] WARNING warning
2024-01-12 21:24:36 root [E:/01 Python 项目/Demo/D01.py line:13] ERROR error
2024-01-12 21:24:36 root [E:/01 Python 项目/Demo/D01.py line:14] CRITICAL critical
format 中常用参数:
%(name)s : logger 的名字
%(asctime)s : 时间
%(filename)s : 执行文件名
%(message)s : 日志信息
%(pathname)s : 执行程序的路径名
%(process)d : 进程ID
%(thread)d : 线程ID
%(threadName)s: 线程名称
%(levelno)s : 日志级别的数值
%(levelname)s : 日志级别的名称
%(lineno)d : 调用日志的代码所在行
英文名 | 中文名 | 描述 |
---|---|---|
Logger | 记录器 | 提供程序直接调用的接口,默认名称 root |
Handler | 处理器 | 将记录的日志发送到指定位置(终端 or 文件) |
Formatter | 格式器 | 用于控制日志信息的输出格式 |
Filter | 过滤器 | 决定哪些日志被输出 |
import logging # 1.实例化 logger 对象 logger = logging.getLogger('admin') logger.setLevel(logging.INFO) # 2.定义 Handler 对象,常用的有 StreamHandler 和 FileHandler consoleHandler = logging.StreamHandler() fileHandler = logging.FileHandler(filename='demo.log') # 3.定义 Formatter 格式 standardFormatter = logging.Formatter('%(asctime)s %(name)s [%(pathname)s line:%(lineno)d] %(levelname)s %(message)s') simpleFormatter = logging.Formatter('%(levelname)s %(message)s') # 4.定义 Filter 过滤器:判断给定字符 与 logger 的名称前缀是否匹配 # 默认全匹配,可选操作 flt = logging.Filter('ad') # 若匹配则打印 # 5.将 Handler 与 Formatter 绑定、Logger 与 Handler、Filter 绑定 consoleHandler.setFormatter(standardFormatter) fileHandler.setFormatter(simpleFormatter) logger.addHandler(consoleHandler) logger.addHandler(fileHandler) logger.addFilter(flt) # 6.打印 logger.debug('debug') logger.info('info') logger.warning('warning') logger.error('error') logger.critical('critical')
logging.conf:
[loggers] keys=root, logger01 # root 根日志器(必须有) [handlers] keys=consoleHandler, fileHandler [formatters] keys=standardFormatter, simpleFormatter [logger_root] handlers=fileHandler level=INFO [logger_logger01] level=DEBUG handlers=consoleHandler qualname=myLogger # 日志器名(getLogger 时使用) propagate=0 # 是否将日志信息传播到上级,0=否 [handler_consoleHandler] class=StreamHandler args=(sys.stdout,) # 标准 formatters=standardFormatter [handler_fileHandler] level=DEBUG class=FileHandler args=('demo.log', 'w') formatters=simpleFormatter [formatter_standardFormatter] format=%(asctime)s %(name)s [%(pathname)s line:%(lineno)d] %(levelname)s %(message)s [formatter_simpleFormatter] format=%(levelname)s %(message)s
使用时,注意去掉中文注释( configparser 读中文会报错)
xx.py:
import logging.config # 读取配置文件 logging.config.fileConfig('logging.conf') # 获取 logger logger_root = logging.getLogger() logger_my = logging.getLogger('myLogger') # 打印 到 文件 logger_root.debug('debug') logger_root.info('info') logger_root.warning('warning') logger_root.error('error') logger_root.critical('critical') print('------------------') # 打印 到 控制台 logger_my.debug('debug') logger_my.info('info') logger_my.warning('warning') logger_my.error('error') logger_my.critical('critical')
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。