python日志

本文详细介绍了Python的日志配置,包括设置不同级别的日志记录(INFO, DEBUG, ERROR),使用TimedRotatingFileHandler进行文件轮转,并通过StreamHandler将日志输出到控制台。示例代码展示了如何加载日志配置文件并创建日志对象,以及如何在代码中使用这些日志对象记录信息、调试和错误日志。

日志配置

[loggers]
keys=root

[handlers]
keys=rotatingFileHandler,streamHandler,errorHandler

[formatters]
keys=simpleFmt

[logger_root]
level=INFO
handlers=rotatingFileHandler,streamHandler,errorHandler

[handler_rotatingFileHandler]
class=handlers.TimedRotatingFileHandler
level=INFO
formatter=simpleFmt
args=(os.path.abspath(os.getcwd() + "/info.log"),"midnight", 1,23,'utf-8')


[handler_errorHandler]
class=handlers.TimedRotatingFileHandler
level=ERROR
formatter=simpleFmt
args=(os.path.abspath(os.getcwd() + "/error.log"), "midnight", 1, 23,'utf-8')

[handler_streamHandler]
level=DEBUG
class=StreamHandler
formatter=simpleFmt
args=(sys.stdout,)

[formatter_simpleFmt]
format=%(asctime)s %(pathname)s(%(lineno)d): %(levelname)s %(message)s

加载日志


import logging
import logging.config
import os
 
 
def get_logger(name='root'):
    conf_log = os.path.abspath(os.getcwd() + "/log.ini")
    logging.config.fileConfig(conf_log)
    return logging.getLogger(name)
 
 
log = get_logger(__name__)


使用日志

from  loadlogger import log


log.info('info')
log.debug('debug')
log.error('error')

查看日志

Python 日志的使用和配置可以从基础配置、高级配置、模块级配置等方面展开。 ### 日志基础与基本配置 Python日志功能可以通过 `logging` 模块实现。基础配置涵盖了日志级别、日志格式等内容。官方文档为 `logging — Python日志记录工具 — Python 3.12.6 文档` [^1]。 ### 模块级别的日志记录器配置 要实现灵活的日志配置策略,让日志记录器根据调用者或运行环境自动调整,可按以下步骤操作: - 定义模块级别的日志记录器:在 Python 文件中定义。 - 检查已有的处理器:在模块级别日志记录器配置时,检查是否已有处理器,即是否已由其他库配置了日志。 - 独立运行时配置默认日志:若没有已有的处理器,则添加默认的日志配置,如输出到控制台 [^2]。 示例代码如下: ```python import logging # 定义模块级别的日志记录器 logger = logging.getLogger(__name__) # 检查是否已有处理器 if not logger.hasHandlers(): # 添加默认的日志配置,输出到控制台 console_handler = logging.StreamHandler() logger.addHandler(console_handler) logger.setLevel(logging.DEBUG) # 示例使用 logger.debug('This is a debug message') ``` ### 高级配置与日志处理器 Python `logging` 模块的高级配置,重点在于使用不同的日志处理器来控制日志的输出位置和方式,同时使用日志格式器让日志信息更直观、易读,还可应用日志过滤器根据自定义规则过滤日志消息,提高日志的可控性和效率 [^3]。 常见的日志处理器如下: - `StreamHandler`:输出日志到流,如控制台。 - `FileHandler`:输出日志到文件。 - `RotatingFileHandler`:按文件大小进行日志分割。 - `TimedRotatingFileHandler`:按时间进行日志分割。 其中,`StreamHandler` 和 `FileHandler` 直接包含在 `logging` 模块中,其他方式包含在 `logging.handlers` 模块中 [^3][^4]。 示例代码使用 `FileHandler`: ```python import logging logger = logging.getLogger(__name__) file_handler = logging.FileHandler('app.log') formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') file_handler.setFormatter(formatter) logger.addHandler(file_handler) logger.setLevel(logging.INFO) logger.info('This is an info message') ``` ### 日志配置文件 使用 `logging.config` 模块可以通过配置文件来配置日志。在配置文件中,`stream` 可指定日志输出目标流,如 `sys.stdout`、`sys.stderr` 以及网络流。需要注意的是,`stream` 和 `filename` 不能同时提供,否则会引发 `ValueError` 异常 [^4][^5]。 示例配置文件 `logging.conf`: ```ini [loggers] keys=root [handlers] keys=consoleHandler [formatters] keys=simpleFormatter [logger_root] level=DEBUG handlers=consoleHandler [handler_consoleHandler] class=StreamHandler level=DEBUG formatter=simpleFormatter args=(sys.stdout,) [formatter_simpleFormatter] format=%(asctime)s - %(name)s - %(levelname)s - %(message)s ``` 使用配置文件的代码: ```python import logging import logging.config logging.config.fileConfig('logging.conf') logger = logging.getLogger() logger.debug('This is a debug message from config file') ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值