python - 日志库

python日志库

python中用作记录日记,默认分为六种日志级别(括号为级别对应的数值)

  • NOTSET(0)

  • DEBUG(10):详细信息,只有诊断问题时才需要

  • INFO(20):当程序运行时期望的一些信息

  • WARNING(30):软件运行正常,但是可能会有一些预期之外的事情发生

  • ERROR(40):由于一些严重问题导致软件一些功能出现问题

  • CRITICAL(50):很严重的错误直接导致软件不能运行

  • 在自定义日志级别时注意不要和默认的日志级别数值相同

  • 在logging执行时输出大于等于设置的日志级别的日志信息,默认的级别为WARNING

logging库

  • logging常见对象
    • Logger:日志,暴露函数给应用程序,基于日志记录器和过滤器级别决定那些日记有效
    • LogRecord:日志记录器,将日记传到响应的处理器处理
    • Handler:处理器,将(日志记录器产生的)日志记录发送至合适的目的地
    • Filter:过滤器,提供了更好的粒度控制,它可以决定输出那些日志记录
    • Formatter:格式化器,致命了最终输出中日志记录的格式

logging使用非常简单,使用basicConfig()方法就能基本满足使用;如果没有传入参数,会根据默认的配置创建Logger对象,默认日志级别被设置为WARNING

函数参数参数描述
filename日志输出到文件的文件名
filemode文件模式,r[+],w[+],a[+]
format日志输出的格式
datefat日志附带日期时间的格式
style格式占位符,默认为%和{}
level日志输出级别
stream定义输出流,用来初始化StreamHandler对象,不能喝filename参数一起使用,会抛出ValueError异常
handles定义处理器,用来创建Handler对象,不能和filename、stream参数使用,否则会抛出ValueError异常
  • Formatter对象

    Formatter对象用来设置具体的输出格式,常用格式如下:

    格式变量描述
    %(asctime)s将日志的世界构造成可读的形式
    %(name)日志对象的名称
    %(filename)s不包含路径的文件名
    %(pathname)s包含路径的文件名
    %(funcName)日志记录所在的函数名
    %(levelname)s日志的级别名
    %(message)s具体的日志信息
    %(lineno)d日志记录所在的行好
    %(process)d当前进程ID
    %(processName)s当前进程名称
    %(thread)d当前线程ID
    %(threadName)s当前线程名称
  • Logger对象

    • getLogger(name=None):返回一个Logger对象,这个对象提供所有的log使用的接口,name不指定默认为root
    • basicConfig():对logging做一个基本的配置
'''
一般来说日志的处理分为:
1. 获取Logger对象
2. 设置日志等级
3. 设置Handler对象
4. 设置输出格式
5. 将Handler与Logger对象绑定
6. 设置日志输出信息
'''


import logging
#创建logger
log=logging.getLogger("example")
# 设置日志等级
log.setLevel(logging.DEBUG)
# 设置两个处理器对象
# 控制台处理器
hander1=logging.StreamHandler()
# 文件处理器
hander2=logging.FileHandler('haha.log',mode='w',encoding='utf8')
# 给处理器设置日志等级
# 如果不设置则按照logger对象的日志等级
hander1.setLevel(logging.INFO)
hander2.setLevel(logging.DEBUG)
# 设置两个输出格式
formatter1=logging.Formatter("%(asctime)s-%(name)s-%(levelname)s-%(message)s")
formatter2=logging.Formatter("%(levelname)s : %(message)s")
# 设置两个处理器的输出格式
hander1.setFormatter(formatter1)
hander2.setFormatter(formatter2)
# 将处理器绑定logger对象
log.addHandler(hander1)
log.addHandler(hander2)
# 信息处理
log.info("这是一个info信息")
log.debug("这是一个debug信息")
log.warning("这是一个warnning信息")
log.info("这个怎么算呢")

第三方库-loguru

loguru的作用跟logging差不多

from loguru import logger

logger.info('我的世界')
logger.warning('我的世界')
logger.error('我的世界')
logger.debug('我的世界')

# 输出结果是彩色的,更加友好
# 默认的输出格式是包含【时间、级别、模块名、行号以及日志信息】
2022-07-29 10:42:02.217 | INFO     | __main__:<module>:3 - 我的世界
2022-07-29 10:42:02.217 | WARNING  | __main__:<module>:4 - 我的世界
2022-07-29 10:42:02.220 | ERROR    | __main__:<module>:5 - 我的世界
2022-07-29 10:42:02.221 | DEBUG    | __main__:<module>:6 - 我的世界
  • 存储到文件
from loguru import logger

# 可以直接用add方法存储到文件
logger.add("interface_log_{time}.log", rotation="500MB", encoding="utf-8", enqueue=True, compression="zip", retention="10 days")
logger.info("中文test")
logger.debug("中文test")
logger.error("中文test")
logger.warning("中文test")

'''
add方法参数:
第一个参数为保存文件路径
rotation可以理解为日志的创建时机
- rotation = '500MB':当日志文件达到500MB就会重新生成一个文件
- rotation = ‘12:00’:每天12点会创建新文件
- rotation = ‘1 week‘:每一周创建一个文件
retention:配置日志的最长保留时间
compression:配置文件的压缩格式
encoding:文件编码格式
'''
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值