python学习 使用logging 模块输入日志

输出日志信息到文件,同时输出错误信息到控制台

源代码如下:

import logging

#配置 logging

logger=logging.getLogger(__name__)

logger.setLevel(level=logging.DEBUG)

handler=logging.FileHandler("logging_console_file.txt")

handler.setLevel(logging.DEBUG)

formatter=logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s')

handler.setFormatter(formatter)

console =logging.StreamHandler()

console.setLevel(logging.ERROR)

logger.addHandler(handler)

logger.addHandler(console)

1.导入logging模块

import logging

这行代码导入了Python的内置logging模块,该模块提供了灵活的日志记录系统。
 

2.获取或创建logger

logger=logging.getLogger(__name__)

使用getLogger函数并传入__name__(通常是当前模块的名字)来获取或创建一个logger。这样,如果在其他模块中也使用了logging.getLogger(__name__),并且两个模块有不同的__name__,则它们将获得两个不同的logger。

3. 设置logger的级别

logger.setLevel(level=logging.DEBUG)

这行代码设置了logger的级别为DEBUG。这意味着所有级别为DEBUG及以上的日志(如INFOWARNINGERRORCRITICAL)都将被处理。

4. 创建文件处理器

handler=logging.FileHandler("logging_console_file.txt")

使用FileHandler类创建一个文件处理器,它将日志信息写入名为logging_console_file.txt的文件中。

5. 设置文件处理器的级别

handler.setLevel(logging.DEBUG)

这行代码设置了文件处理器的级别为DEBUG,意味着所有级别为DEBUG及以上的日志都将被写入文件。

6. 创建日志格式器

formatter=logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s')

使用Formatter类创建了一个格式器,该格式器定义了日志信息的输出格式。在这个例子中,日志信息将包括时间戳、logger名称、日志级别和日志消息。

7. 将格式器应用到文件处理器

handler.setFormatter(formatter)

这行代码将之前创建的格式器应用到文件处理器上,确保文件处理器按照指定的格式输出日志。

8. 创建控制台处理器

console =logging.StreamHandler()

使用StreamHandler类创建一个控制台处理器,它将日志信息输出到控制台(通常是终端或命令提示符)。

9. 设置控制台处理器的级别

console.setLevel(logging.ERROR)

这行代码设置了控制台处理器的级别为ERROR,意味着只有级别为ERROR及以上的日志才会被输出到控制台。

10. 为logger添加处理器

logger.addHandler(handler)
logger.addHandler(console)

这两行代码将之前创建的文件处理器和控制台处理器都添加到了logger上。这样,当使用logger记录日志时,日志信息将同时被写入文件和输出到控制台。但是,由于两个处理器的级别设置不同,所以只有级别为DEBUG及以上的日志会被写入文件,而只有级别为ERROR及以上的日志会被输出到控制台。

运行结果:

错误信息

严重错误

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值