python学习-日志(logging的定义、参数、format、示例代码、创建logging对象、设置Handler)

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等。
在写代码时,可以把需要输出的信息,打印到文件中,一些其他信息打印到控制台里面,方便查看,并且方便控制。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值