Python日志模块

Python日志模块

学习教程:b站 王铭东老师

Python中logging模块能够完成相关信息的记录,在debug时使用它事半功倍


一、模块介绍

日志级别

DEBUG、INFO、WARNING、ERROR、CRITICAL

默认是WARNING,当在WARNING或其之上时才被跟踪

Python日志模块_第1张图片

日志格式

logging.basicConfig函数中,可以指定日志的输出格式format,这个参数可以输出很多有用的信息

一般使用的格式

format = '%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s:%(message)s)'

格式 含义
%(asctime)s 日志时间 精确到毫秒2025-03-04 17:12:05,390
%(filename)s 当前执行程序的名称
%(lineno)d 当前行号,调用日志输出函数语句所在的代码行
%(levelname)s 日志级别的名称
%(message)s 日志信息
%(filename)s 当前执行程序的名称
%(funcName)s 当前函数名称
%(levelno)s 日志级别的数值(从低到高:10,20,30,40,50)
%(thread)d 线程ID
%(threadName)s 线程名称
%(process)d 进程ID
%(pathname)s 当前执行程序的路径,其实就是sys.argv[0]
%(name)s 使用的日志器的名称,rootLogger默认是"root"

二、使用方法

仅输出到终端
import logging

# logging配置,level=设置默认级别 format=打印格式
logging.basicConfig(level=logging.WARNING, format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s:%(message)s)')

# 开始使用log功能
logging.debug('这是 logging debug message')
logging.info('这是 logging info message')
logging.warning('这是 logging warning message')
logging.error('这是 logging error message')
logging.critical('这是 logging critical message')

仅输出到文件

logging配置:evel=设置默认级别 filename=输出文件地址 filemode=文件操作模式(使用'a') format=打印格式

文件操作模式使用 a 避免了使用w时旧记录被新记录覆盖

import logging

logging.basicConfig(level=logging.WARNING,
                    filename='./log.txt',
                    filemode='a',
                    format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s:%(message)s)')

logging.debug('这是 logging debug message')
logging.info('这是 logging info message')
logging.warning('这是 logging warning message')
logging.error('这是 logging error message')
logging.critical('这是 logging critical message')

同时输出到终端和文件
import logging

# Step1 创建一个logging对象
logger = logging.getLogger()
logger.setLevel(logging.INFO)   # Log等级总开关

# Step2 创建写入文件的handler对象 fh
logfile = './log.txt'
fh = logging.FileHandler(logfile, mode='a')
fh.setLevel(logging.DEBUG)

# Step3 创建写入终端的handler对象 ch
ch = logging.StreamHandler()
ch.setLevel(logging.WARNING)

# Step4 定义输出格式
formatter = logging.Formatter('%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s:%(message)s)')
fh.setFormatter(formatter)
ch.setFormatter(formatter)

# Step5 将handler添加到logger中
logger.addHandler(fh)
logger.addHandler(ch)

logging.debug('这是 logging debug message')
logging.info('这是 logging info message')
logging.warning('这是 logging warning message')
logging.error('这是 logging error message')
logging.critical('这是 logging critical message')

你可能感兴趣的:(Python日志模块)