[python] logging模块的理解

【python】系列文章目录

程序员 需要用日志记录程序的运行情况,以清楚地了解发生了哪些事件,在哪个位置,出现了那些错误;Python自带的标准库有日志模块,可直接调用;

1.手动debug 需要加很多print函数,解决完bug又要删掉,很麻烦,所以引入了logging模块;在logging模块里,可以通过设置日志等级来决定要不要输出;

例如:

import logging

logging.basicConfig(level=logging.DEBUG) #日志等级为:DEBUG ;有输出;

# logging.basicConfig(level=logging.INFO) #日志等级为:INFO ;无输出;
 
result1 = '第一个函数运行OK'
logging.debug(result1)
result2 = '第二个函数运行OK'
logging.debug(result2)
result3 = '第三个函数运行OK'
logging.debug(result3)
result4 = '第四个函数运行OK'
logging.debug(result4)
result5 = '第五个函数运行OK'
logging.debug(result5)

提示:以下是本篇文章正文内容;

第一阶段——基本使用

1.日志等级

日志级别:  DEBUG < INFO<WARNING<ERROR<CRITICAL

 注意:如果设置的日志等级是 WARNING ; 那么大于等于WARNING级别的日志信息都会输出;

2.Format格式

3. 例子

import logging

# 设置输出的格式
LOG_FORMAT = "时间:%(asctime)s - 日志等级:%(levelname)s - 日志信息:%(message)s"
# 对logger进行配置——日志等级&输出格式&日志输出文件
logging.basicConfig(level=logging.WARNING, format=LOG_FORMAT, filename='my.log')
'''
注意:logging.basicConfig() 这个函数只能有一个, 如果写了多条只有第一条会生效;
      如果不把日志保存在某个文件里,电脑/程序/编辑器 有一个关了,就会丢失日志;

# 设置不同level的日志 输出不同message 
logging.debug("This is a debug log")
logging.info("This is a info log")
logging.warning("This is a warning log")
logging.error("This is a error log")
logging.critical("This is a critical log")

第二阶段——进阶使用

1.模块化组件

利用组件,达到灵活配置日志器的作用;

 组件间的关系:

 2.模块化组件的使用

使用步骤:

1.创建一个logger对象;

2.定义一个handler,它决定日志发到哪里去;

        常用的有:

                SteamHandler ——> 输出到控制台 ;

                FileHandler     ——>  输出到文件 ;

3.设置日志级别和输出格式;

4.把handler添加到对应的logger里;

3.例子

例子1: 一个 logger 对应一个 Handler ;

import logging

# 1.创建一个logger(日志记录器)对象,设置记录器名字;
my_logger = logging.Logger("first_logger")

# 2.定义handler(日志处理器),决定把日志发到哪里;
my_handler = logging.FileHandler('test.log')

# 3.设置日志级别(level)和输出格式Formatters(日志格式器);
my_handler.setLevel(logging.INFO)
my_format = logging.Formatter("时间:%(asctime)s 日志信息:%(message)s 行号:%(lineno)d")

# 把handler添加到对应的logger中去。
my_handler.setFormatter(my_format)
my_logger.addHandler(my_handler)


# 使用:
my_logger.info("我是日志组件")

例子2: 一个 logger 对应两个 handler ;

import logging

# 创建一个logger(日志记录器)对象;
my_logger = logging.Logger("first_logger")


# 第一个日志处理器
my_handler = logging.FileHandler('test.log')

my_handler.setLevel(logging.INFO)
my_format = logging.Formatter("时间:%(asctime)s 日志信息:%(message)s 行号:%(lineno)d")

my_handler.setFormatter(my_format)
my_logger.addHandler(my_handler)


# 第二个日志处理器
you_handler = logging.StreamHandler()

you_handler.setLevel(logging.DEBUG)
you_format = logging.Formatter("时间:%(asctime)s 日志信息:%(message)s 行号:%(lineno)d 这是StreamHandler")

you_handler.setFormatter(you_format)
my_logger.addHandler(you_handler)


# 使用:
my_logger.info("我是日志组件")

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值