文章目录
- logging介绍
- logging.basicConfig定义
- logging.basicConfig参数说明
- logging.basicConfig日志等级说明
- logging.basicConfig示例代码
- logging.basicConfig 的level设置
- 创建新的logging对象
- 示例代码
- 说明
logging介绍
logging.basicConfig定义
首先查看一下函数提示信息截图:
logging.basicConfig参数说明
logging.basicConfig函数参数详细介绍:
filename: 指定日志文件名
filemode: 和file函数意义相同,指定日志文件的打开模式,默认为’a’
format: 指定输出的格式和内容,format可以输出很多有用信息:
%(levelno)s: 打印日志级别的数值
%(levelname)s: 打印日志级别名称
%(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
%(filename)s: 打印当前执行程序名
%(funcName)s: 打印日志的当前函数
%(lineno)d: 打印日志的当前行号
%(asctime)s: 打印日志的时间
%(thread)d: 打印线程ID
%(threadName)s: 打印线程名称
%(process)d: 打印进程ID
%(message)s: 打印日志信息
datefmt: 指定时间格式,同time.strftime()
level: 设置日志级别,默认为logging.WARNING
stream: 指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略
logging.basicConfig日志等级说明
日志level说明:
设置level的作用就是过滤等级低的日志。
logging.basicConfig示例代码
import logging
# 设置文件名,设置文件写模式:append,设置文件输出登记:info
# 设置日志打印格式:打印日志级别,日志时间,打印当前模块名,打印当前行号,打印日志信息
# 设置时间格式
logging.basicConfig(filename='testLog.txt', filemode='a', level=logging.DEBUG,
format='%(levelname)s %(asctime)s %(filename)s %(lineno)d : %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S')
logging.debug('This is a debug message.')
logging.info('This is a info.')
logging.warning('This is a warning.')
logging.error('This is a error.')
logging.critical('This is a critical.')
logging.basicConfig 的level设置
当我设置:level=logging.DEBUG,打印结果为:
当我设置:level=logging.WARN,打印结果为:
我们可以通过这种方式设置打印的日志级别。发布前,可以把debug信息打印出来,对外发布就打印warn及以上就好。
创建新的logging对象
示例代码
# 自定义logger对象,设置对象名:test,默认logger的level是warning,并且format为空
logger = logging.getLogger(name='test')
logger.setLevel(logging.DEBUG) # 默认WARN,修改成DEBUG,INFO才能打印出来
cHandler = logging.StreamHandler()
fHandler = logging.FileHandler("fileLog.txt")
cHandler.setLevel(logging.ERROR)
fHandler.setLevel(logging.INFO)
cFormat = logging.Formatter('%(name)s - %(levelname)s - %(message)s')
fFormat = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
cHandler.setFormatter(cFormat)
fHandler.setFormatter(fFormat)
logger.addHandler(cHandler)
logger.addHandler(fHandler)
def func():
logger.debug('This is a debug message.')
logger.info('This is a info.')
logger.warning('This is a warning.')
logger.error('This is a error.')
logger.critical('This is a critical.')
if __name__ == "__main__":
func()
结果:
说明
自定义对象logger ,可以给logger 添加多个addHandler,并且针对不同的handler,可以设置不同的format,level等。
在写代码时,可以把需要输出的信息,打印到文件中,一些其他信息打印到控制台里面,方便查看,并且方便控制。