在Python项目中自定义日志工具

在Python项目中自定义日志工具

日志记录是软件开发中的一个关键部分,它可以帮助开发人员调试代码、监控运行状况以及记录重要事件。在Python中,logging 模块提供了强大的日志记录功能。本文将介绍如何创建一个日志工具,使其能够同时将日志输出到文件和控制台,并确保日志文件在项目目录的 log 文件夹中。我们还将解决在PyCharm中查看日志文件乱码的问题。

在这里插入图片描述

在这里插入图片描述

一、创建日志工厂模块

首先,我们创建一个日志工厂模块 log_factory.py。这个模块将定义一个 get_logger 函数,该函数允许用户自定义日志文件的名称,并确保日志文件保存在项目目录的 log 文件夹内。

import logging
import os

def get_logger(name, log_file='my_log.log', log_level=logging.DEBUG, encoding='utf-8'):
    # 定义日志格式
    LOG_FORMAT = "[%(levelname)s] [%(asctime)s] [%(module)s.%(funcName)s] [line:%(lineno)d]: %(message)s"
    
    # 获取项目目录路径
    project_dir = os.path.dirname(os.path.abspath(__file__))
    
    # 创建log文件夹路径
    log_dir = os.path.join(project_dir, 'log')
    
    # 如果log文件夹不存在,则创建它
    if not os.path.exists(log_dir):
        os.makedirs(log_dir)
    
    # 完整的日志文件路径
    log_file_path = os.path.join(log_dir, log_file)

    # 创建一个日志记录器
    logger = logging.getLogger(name)
    logger.setLevel(log_level)  # 设置日志记录器的级别

    # 检查是否已有处理器,避免重复添加处理器
    if not logger.handlers:
        # 创建一个日志格式器
        formatter = logging.Formatter(LOG_FORMAT)

        # 创建文件处理器,指定编码格式
        file_handler = logging.FileHandler(log_file_path, encoding=encoding)
        file_handler.setLevel(log_level)  # 设置文件处理器的级别
        file_handler.setFormatter(formatter)  # 将格式器添加到文件处理器

        # 创建控制台处理器
        console_handler = logging.StreamHandler()
        console_handler.setLevel(log_level)  # 设置控制台处理器的级别
        console_handler.setFormatter(formatter)  # 将格式器添加到控制台处理器

        # 将文件处理器和控制台处理器添加到日志记录器
        logger.addHandler(file_handler)
        logger.addHandler(console_handler)

    return logger

在这个模块中,我们定义了日志格式、创建了日志目录并设置了文件和控制台处理器。我们还确保文件处理器使用UTF-8编码格式,以避免在查看日志时出现乱码。

二、使用日志工厂

在需要记录日志的地方,我们可以简单地导入并使用这个日志工厂。例如,在 main.py 中:

from log_factory import get_logger

# 获取日志记录器,自定义日志文件名
logger = get_logger('my_app_logger', log_file='custom_log.log')

# 示例日志消息
logger.debug("这是一个调试消息")
logger.info("这是一个信息消息")
logger.warning("这是一个警告消息")
logger.error("这是一个错误消息")
logger.critical("这是一个严重错误消息")

通过这种方式,日志文件将被创建在项目目录的 log 文件夹内。如果 log 文件夹不存在,代码会自动创建它。

三、解决PyCharm中日志文件乱码问题

在PyCharm中查看日志文件时,如果出现乱码问题,通常是由于日志文件的编码格式与PyCharm解析文件时的编码格式不一致引起的。我们可以按照以下步骤解决这个问题:

1. 设置日志文件编码

log_factory.py 中,我们已经指定了文件处理器的编码格式为 UTF-8:

file_handler = logging.FileHandler(log_file_path, encoding='utf-8')

2. 在PyCharm中设置文件编码

确保PyCharm中的文件编码设置与日志文件的编码格式一致:

  • 打开日志文件。
  • 在PyCharm窗口的右下角,点击当前文件编码(例如 UTF-8)。
  • 在弹出的菜单中,选择 UTF-8

3. 设置默认编码(可选)

你还可以设置PyCharm的默认文件编码,以确保所有打开的文件都使用相同的编码格式:

  • 进入 File -> Settings(Windows/Linux)或 PyCharm -> Preferences(Mac)。
  • 导航到 Editor -> File Encodings
  • 设置 Global EncodingProject EncodingUTF-8

通过以上步骤,你应该能够在PyCharm中正确显示日志文件而不会出现乱码问题。

结论

通过本文的介绍,你学会了如何创建一个高效的日志工具,将日志同时输出到文件和控制台,并确保日志文件保存在项目目录的 log 文件夹中。我们还解决了在PyCharm中查看日志文件乱码的问题。希望这些内容对你的项目开发有所帮助!

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值