Python笔记-----log日志(logging模块)

一、日志等级

等级描述
Debug什么日志信息都可以记录,最详细的日志信息
Info日志信息详细程度仅次于Debug,一般只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作
Warning当某些不期望的事情发生时记录的信息,但是此时应用程序还是正常运行
Error记录发生了错误导致某些功能无法运行时的日志信息
Critical记录发生了严重错误导致程序无法运行时的日志信息
#日志函数
logging.debug()
logging.info()
logging.warning()
logging.error()
logging.critical()

二、logging模块

logging模块包括logger,handler,filter,formatter:

  1. logger:是提供我们记录日志的对象,logging模块中最基础的对象,用logging.getLogger(name=None)方法进行初始化,如果不带参数,返回的就是默认的root logger。通常logger的名字我们对应模块名,如聊天模块、数据库模块、验证模块;

  2. handler:log日志的输出地方,如:控制台,文件,邮件发送等,一个logger添加多个handler;

  3. filter:过滤日志信息,得到自己想要的log日志信息

  4. formater:格式化输出日志的信息。

logging.***使用的是全局的root logger 实例,mylogger是一个新实例,它默认继承 root logger的设置
logging是全局静态,可以直接拿来用。

#1 .logger
#创建一个logger对象
logger = logging.getLogger('Messages') #返回一个名称为name的Logger实例。如果再次使用相同的名字,是实例化一个对象。未指定name,返回Logger实例,名称是root,即根Logger。
#logger对象设置日志等级
logger.setLevel(logging.DEBUG)

#2.Handler 
#创建一个FileHandler对象,log日志输出到文件FileName里
fh = logging.FileHandler(FileName)
#创建一个StreamHandler对象,log日志输出到控制台
sh = logging.StreamHandler()
#将FileHandler对象,StreamHandler对象添加到logger, 日志就会同时输出到不同的Handler所对应的地方
logger.addHanlder(FileHandler)
logger.addHanlder(StreamHandler)
#给FileHander设置日志等级,每个handler又可以定义不同日志级别,以实现日志分级过滤显示
#如果logger对象设置的最低日志等级 < Handler对象最低设置的等级,handler对象的实际最低log日志等级为Handler对象设置的最低等级
#如果logger对象设置的最低日志等级 > Handler对象最低设置的等级,handler对象的实际最低log日志等级为logger对象设置的最低等级
fh.setLevel(logging.DEBUG)
#给StreamHandler设置日志等级,每个handler又可以定义不同日志级别,以实现日志分级过滤显示
sh.setLevel(logging.DEBUG)
#给FileHander格式化日志信息
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') #定义输出格式
fh.setFormatter(formatter) #添加formatter 到 FileHander里
#给StreamHandler格式化日志信息
sh.setFormatter(formatter)

总结:
logger对象相当于一个输出log日志的接口
handler中定义需要输出log日志的等级、log日志输出的格式
将不同handler添加到logger里,实现log日志输出到不同地方,及log日志分级过滤
实现一个logger,记录多个log

logging.basicConfig()—log日志输出到文件或者控制台

1.用法:

logging.basicConfig(level=logging.DEBUG, format=LOG_FORMAT, datefmt=DATE_FORMAT, handlers=**)

logging.basicConfig的参数:
filename:设置日志输出的文件,默认输出到控制台。
filemode:设置打开日志文件的方式,默认为“a”,即追加。
format:设置日志输出的字符串格式, 具体的格式有如下几种:
%(name)s:日志记录器的名称
%(levelno)s:日志级别数值
%(levelname)s:日志级别名称
%(pathname)s:输出日志时当前文件的绝对路径
%(filename)s:输出日志时当前文件名(包含后缀)
%(module)s:输出日志时的模块名(即%(filename)s不包含后缀名)
%(funcName)s:输出日志时所在函数名
%(lineno)d:输出日志时在文件中的行号
%(asctime)s:输出日志时的时间
%(thread)d:输出日志的当前线程ID
%(threadName)s:输出日志的当前线程名称
%(process)s:输出日志的当前进程ID
%(processName)s:输出日志的当前进程名称
%(message)s:输出日志的内容
datefmt:设置日志时间字符串的输出格式,默认时间字符串格式为%Y-%m-%d %H:%M:%S。
style:设置format字符串格式化的风格,可以是“%”,“{”或“$”,默认是“%”。
level:设置日志的级别
stream:指定日志的输出Stream,可以是sys.stderr,sys.stdout或者是文件(即使用open函数打开的文件流,但是这个文件流logging模块不会主 动关闭它),默认是sys.stderr,如果同时指定了filename参数和stream参数,那stream参数就会被忽略

2. basicconfig 局限性:

1、中文的乱码问题
2、不能同时往文件和屏幕上输出
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值