欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python学习 :常用模块(三)

程序员文章站 2022-03-21 19:41:25
常用模块(三) 七、logging模块 日志中包含的信息应有正常的程序访问日志,还可能有错误、警告等信息输出 python的 logging 模块提供了标准的日志接口,你可以通过它存储各种格式的日志,logging 的日志可以分为 debug() , info() , warning() , err ......

常用模块(三)

七、logging模块

日志中包含的信息应有正常的程序访问日志,还可能有错误、警告等信息输出

python的 logging 模块提供了标准的日志接口,你可以通过它存储各种格式的日志,logging 的日志可以分为 debug() , info() , warning() , error() , critical() 5个级别

 

eg.简单的日志记录

import logging
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')
>>> warning:root:warning message
    error:root:error message
    critical:root:critical message
# 默认情况下logging模块将日志打印到了标准输出中(即屏幕上),且只显示了大于等于warning级别的日志
# 默认的日志级别设置为warning(日志级别等级 critical > error > warning > info > debug > notset)
# 默认的日志格式为日志级别:logger名称:用户输出消息。

 

eg.配置日志的级别,日志格式,输出位置

import logging
logging.basicconfig(level=logging.debug,  # 调整日志开始显示的级别
                    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
                    datefmt='%a, %d %b %y %h:%m:%s',
                    filename='test.log',  # 在当前目录下创建日志记录文件
                    filemode='w')  # 文件的打开方式为 w
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')

 

format参数中可以用到的格式化串:

%(name)s       # logger的名字
%(levelno)s    # 数字形式的日志级别
%(levelname)s  # 文本形式的日志级别
%(pathname)s   # 调用日志输出函数的模块的完整路径名,可能没有
%(filename)s   # 调用日志输出函数的模块的文件名
%(module)s     # 调用日志输出函数的模块名
%(funcname)s   # 调用日志输出函数的函数名
%(lineno)d     # 调用日志输出函数的语句所在的代码行
%(created)f    # 当前时间,用unix标准的表示时间的浮 点数表示
%(relativecreated)d # 输出日志信息时的,自logger创建以 来的毫秒数
%(asctime)s    # 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
%(thread)d     # 线程id。可能没有
%(threadname)s # 线程名。可能没有
%(process)d    # 进程id。可能没有
%(message)s    # 用户输出的消息

 

logger 对象 :使用 logger 对象,让文件以及屏幕同时输出日志

import logging
logger = logging.getlogger()

# 创建一个handler,用于写入日志文件
fh = logging.filehandler('test.log')  # 文件输出流对象
# 再创建一个handler,用于输出到控制台
ch = logging.streamhandler()  # 标准输出流对象(即屏幕输出)

formatter = logging.formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

fh.setformatter(formatter)  # 取得要输出的标准格式
ch.setformatter(formatter)  # 取得要输出的标准格式

logger.addhandler(fh)  # logger对象可以添加多个fh和ch对象
logger.addhandler(ch)

logger.setlevel(logging.debug) # 设置日志的级别

# 最后设置日志想要记录的不同信息
logger.debug('logger debug message')
logger.info('logger info message')
logger.warning('logger warning message')
logger.error('logger error message')
logger.critical('logger critical message')