[82.程序调试与测试(2):输出日志到控制台] 零基础学python,简单粗暴



输出日志到控制台

import logging

# 基本配置
# level=logging.DEBUG 输出DEBUG以上级别的日志内容
# format定义了日志输出格式:'输出时间 - 日志名称 - 日志级别 - 日志内容'
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')

# 获取logger对象,命名为mylog
logger = logging.getLogger("mylog")

# 打印日志
logger.info("Start print log")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")

我们发现info级别以上的信息都在控制台输出了,debug的级别低于info,因此没有被输出 

日志级别

  • 下面是Python源码对日志级别的定义,数值越大,级别越高;
  • 输出时,等于或高于配置级别的日志信息都会被输出;
  • 在上例中,配置级别为INFO,则INFO,WARNING,ERROR,CRITICAL级别的日志都会被输出,DEBUG的级别低于INFO,因此不会被输出
CRITICAL = 50
FATAL = CRITICAL
ERROR = 40
WARNING = 30
WARN = WARNING
INFO = 20
DEBUG = 10
NOTSET = 0

不同的级别的具体含义: 
- FATAL:致命错误 
- CRITICAL:特别糟糕的事情,如内存耗尽、磁盘空间为空,一般很少使用 
- ERROR:发生错误时,如IO操作失败或者连接问题 
- WARNING:发生很重要的事件,但是并不是错误时,如用户登录密码错误 
- INFO:处理请求或者状态变化等日常事务 
- DEBUG:调试过程中使用DEBUG等级,如算法中每个循环的中间状态

日志格式

%(levelno)s:打印日志级别的数值
%(levelname)s:打印日志级别的名称
%(pathname)s:打印当前执行程序的路径
%(filename)s:打印当前执行程序名
%(funcName)s:打印日志的当前函数
%(lineno)d:打印日志的当前行号
%(asctime)s:打印日志的时间
%(thread)d:打印线程ID
%(threadName)s:打印线程名称
%(process)d:打印进程ID
%(message)s:打印日志信息
版权声明:本文为博主原创文章,未经博主允许不得转载。https://my.csdn.net/pangzhaowen

猜你喜欢

转载自blog.csdn.net/pangzhaowen/article/details/80740311