python常用模块之logging模块的详细使用

文章介绍了Python中的logging模块,包括loggers(记录器)、handlers(处理器,决定日志输出位置)、filters(过滤器)和formatters(格式化器)的概念和用法。通过示例代码展示了如何创建和配置这些组件,以及在实际生产环境中推荐使用配置文件来管理日志设置。
摘要由CSDN通过智能技术生成

python中logging模块的认识

在这里插入图片描述

  • loggers:理解为创建的一支笔,后面我们的日志就是用这个笔来写的
  • handlers:决定了我们创建的笔要把日志写到什么地方,常见的就是控制台和日志文件
  • filters:这个不常用,就是决定我们什么笔能写日志,什么笔不能写日志
  • formatters这个决定我们的日志长成什么样子,输出格式是什么样的

logging模块使用过程

在这里插入图片描述

  1. 创建一只笔(logger):想一下,没笔怎么写日志呢?对不对
  2. 创建handlers:就是通道,决定你往哪里写
  3. 创建formatters:一定要用formatters装饰你的handler,其实就是设置日志的格式
  4. handlers加入到logger:这个时候才是调用info,error,warning等方法的时候

代码演示

# -*- coding: utf-8 -*-

import logging

logger = logging.getLogger("mylog")  # 创建记录器,这个是单例的

logger.setLevel(logging.INFO)  # 设置日志的级别,这个地方设置的和后面handler里面设置有覆盖关系,logger的会覆盖handler里面的

# 创建handler
consoleHandler = logging.StreamHandler()  # 这是往控制台写的
consoleHandler.setLevel(logging.DEBUG)

fileHandler = logging.FileHandler(filename="appLog")  # 这是往文件写的,我们不设置日志等级,将使用logger的日志等级

# 创建formatters
formatter = logging.Formatter("%(asctime)s-%(filename)s-%(levelname)s-%(message)s")

# 用formatters装饰我们的handlers
consoleHandler.setFormatter(formatter)
fileHandler.setFormatter(formatter)

# 将handlers和logger绑定
logger.addHandler(consoleHandler)
logger.addHandler(fileHandler)


if __name__ == '__main__':
    logger.debug("this is debug log")
    logger.info("this is info log")
    logger.warning("this is warning log")
    logger.error("this is error log")
    logger.critical("this is critical log")

在这里插入图片描述
在这里插入图片描述

实际在生产项目中,采用配置文件的方式才是最推荐的

这是日志的配置文件

[loggers]
keys=root,mylog

[handlers]
keys=consoleHandler,fileHandler

[formatters]
keys=simpleFormatter

[logger_root]
level=DEBUG
handlers=consoleHandler
qualname=root

[logger_mylog]
level=INFO
handlers=consoleHandler,fileHandler
qualname=mylog
propagate=0


[handler_consoleHandler]
class=StreamHandler
level=INFO
formatter=simpleFormatter
args=(sys.stdout,)

[handler_fileHandler]
class=handlers.TimedRotatingFileHandler
level=DEBUG
formatter=simpleFormatter
args=('../testoutput/logs/newlog.log', 'midnight',1,0)


[formatter_simpleFormatter]
format=%(levelname)8s - %(name)s - %(asctime)s - %(module)s.%(funcName)s - %(message)s
datefmt=%Y-%m-%d %H:%M:%S

这是日志使用的代码

# -*- coding: utf-8 -*-

import logging.config

logging.config.fileConfig("../config/logging.conf")
logger = logging.getLogger("mylog")

logger.debug("this is debug log")
logger.info("this is info log")
logger.warning("this is warning log")
logger.error("this is error log")
logger.critical("this is critical log")

最后执行的结果如下:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值