Python内置的日志模块logging
log日志
-记录程序运行状况,信息,错误,警告等信息,
-用于错误排查,系统运维
日志级别:
10 debug 调试,诊断
20 info 普通信息
30 warning 警告信息
40 error 错误信息
50 cirtical 危险信息,严重错误,程序无法继续运行
格式化:输出格式
规则 描述
%(asctime)s 日志事件发生的时间
%(levelname)s 该日志记录的日志级别
%(message)s 日志记录的文本内容
%(name)s 所使用的日志器名称,默认是’root’
%(pathname)s 调用日志记录函数的文件的全路径
%(filename)s 调用日志记录函数的文件
%(funcName)s 调用日志记录函数的函数名
%(lineno)d 调用日志记录函数的代码所在的行号
输出到文件:
设置一下filename,看源码
高级用法:输出到不同的地方
四大组件说明
Loggers(日志记录器) 提供程序直接使用的接口
Handlers(日志处理器) 将记录的日志发送到指定的位置
Filters(日志过滤器) 用于过滤特定的日志记录
Formatters(日志格式器) 用于控制日志信息的输出格式
一般使用步骤:
1.创建一个logger对象,设置全局等级
2.创建handler,决定把日志发到哪里(可以有多个),并设置其等级
3.创建输出格式,添加到handler
4.handler添加到logger
"""
logging模块的简单使用
"""
import logging
#日志级别
logging.basicConfig(
level=30, # 设置级别,根据级别显示
format="%(asctime)s-%(levelname)s-%(message)s", # 设置输出格式
filename='E:/LearnPython/note1.log' # 设置 日志文件路径,把日志写入该文件 ,没有则自动在控制台输出
)
#写日志
logging.debug('This is a debug log')
logging.info('This is a info log')
logging.warning('This is a warning log')
logging.error('This is a error log')
logging.critical('This is a critical log')
"""
logging的高级用法,包含面向对象的思想
logger是一个日志器,用来记录日志,真正干活的是hander处理器,
它包括控制输出到文件的文件处理器和控制输出到控制台的StreamHandler,
handler上又可以添加formatter和filter,以便更精确的控制日志输出格式和方式
"""
import logging
# 1.创建一个logger,并给他起名字,一般用__name__
logger = logging.getLogger('%s_log' % __name__)
# 2.设置日志等级
logger.setLevel(logging.INFO) # 这里是全局等级 不设置 默认是warning
# 3.创建一个handler对象,用于写入到日志文件
fh = logging.FileHandler('test.log', encoding='utf-8')
# 给处文件理器设置等级
fh.setLevel(logging.INFO)
# 创建一个handler对象,用于输出到控制台
ch = logging.StreamHandler()
#给控制台处理器设置等级
ch.setLevel(logging.WARNING)
# 4.设置格式,创建格式器对象
formatter = logging.Formatter(
'%(asctime)s - %(filename)s [line:%(lineno)d - %(levelname)s: %(message)s]'
)
# 往handler 添加格式
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# 5.再往日志器logger上添加handler,日志器就做好了
logger.addHandler(ch)
logger.addHandler(fh)
# 然后记录日志,不同的处理器根据自身的设置,会对日志做不同的处理(以什么等级,输出到控制台还是写入文件,以什么格式写等等)
logger.info('我是一个普通信息!')
logger.warning('This is a warning log')
这两条信息都会写入文件tset.log, 只有下面一条会输出到控制台。