python中的logging模块
程序员文章站
2022-06-08 10:44:07
...
组建
loggers(日志记录器)----------------提供程序直接使用的接口
Handlers(日志处理器)--------------将记录的日志发送到指定的位置
Filters(日志过滤器)------------------用于过滤将特定的目录记录
Formatters(日志格式器)-----------用于控制日志信息的输出格式
使用步骤
一个规范的日志文件创建
1.创建log对象,设置全局等级
2.基于log对象创建对应的处理对象(写入文件,控制台打印出来)
3.定义记录日志的格式
4.将创建的处理对象Handler,formater分别添加到log对象
import logging
#简单使用
# log_format = '[%(asctime)s--%(levelname)s--%(message)s]'
# logging.basicConfig(level=logging.DEBUG,format=log_format,)
# logging.debug('this is a debug log,')
"""
一个规范的日志文件创建
1.创建log对象,设置全局等级
2.基于log对象创建对应的处理对象(写入文件,控制台打印出来)
3.定义记录日志的格式
4.将创建的处理对象Handler,formater分别添加到log对象
"""
# 1创建logd对象,并设置全局等级
logger = logging.getLogger('%s_log'%__name__)
logger.setLevel(logging.DEBUG)
# 2创建Handler对象,用于写入到日志文件
fh = logging.FileHandler('06test_log.py',encoding = 'utf-8')
fh.setLevel(logging.ERROR)
# 2创建handler对象,用于在控制台打印出来
ch = logging.StreamHandler()
ch.setLevel(logging.WARNING)
# 3定义日志格式
formatter = logging.Formatter('[%(asctime)s--%(levelname)s--%(message)s]')
# 4添加log对象
fh.setFormatter(formatter)
ch.setFormatter(formatter)
logger.addHandler(fh)
logger.addHandler(ch)
if __name__ == '__main__':
logger.warning('这是一个警告信息')
logger.warning('This is a warning message')
logger.error('这是一个错误信息')
运行结果—控制台显示
[2019-09-16 17:05:28,995--WARNING--这是一个警告信息]
[2019-09-16 17:05:28,996--WARNING--This is a warning message]
[2019-09-16 17:05:28,997--ERROR--这是一个错误信息]
运行结果—文件中内容,因为我多跑了几次,就是这样重复了
[2019-09-16 17:01:39,670--WARNING--This is a warning message]
[2019-09-16 17:01:39,670--ERROR--这是一个错误信息]
[2019-09-16 17:02:37,099--WARNING--这是一个警告信息]
[2019-09-16 17:02:37,100--WARNING--This is a warning message]
[2019-09-16 17:02:37,100--ERROR--这是一个错误信息]
[2019-09-16 17:03:29,474--WARNING--这是一个警告信息]
[2019-09-16 17:03:29,474--WARNING--This is a warning message]
[2019-09-16 17:03:29,474--ERROR--这是一个错误信息]
[2019-09-16 17:04:25,441--ERROR--这是一个错误信息]
[2019-09-16 17:05:28,997--ERROR--这是一个错误信息]
formatter格式
%(asctime)s 日志发生的事件
%(levelname)s 该日志记录的日志级别
%(message)s 日志记录的文本内容
%(name)s 所使用的日志器名称,默认是'root'
%(pathname)s 调用日志记录函数的文件全路径
%(filename)s 调用日志记录函数的文件名
%(funcname)s 调用日志记录函数的函数名
%(lineno)d 调用日志记录函数的代码所在行数