标签搜索

python 日志记录器

kirei
2025-05-20 / 0 评论 / 4 阅读 / 正在检测是否收录...

logging

控制台与文件都输出日志,采用当前时间命名日志文件

示例

import logging
import time
import os


class MyLogger:

    def __init__(self):
        # 定义记录器
        self.logger = logging.getLogger()
        # 这是记录器级别
        self.logger.setLevel(logging.DEBUG)

        # 控制台输出器
        sh = logging.StreamHandler()
        sh.setLevel(logging.INFO)

        # 文件名
        file_name = "{}.log".format(time.strftime("%Y-%m-%d"))

        # 获取当前文件目录
        file_path = os.path.dirname(__file__)
        file_path = os.path.join(file_path, "..", "log")  # 当前文件的上级目录有无名为log的文件夹
        if not os.path.isdir(file_path):
            os.makedirs(file_path)  # 创建该目录

        # 文件输出器
        fh = logging.FileHandler(filename=os.path.join(file_path, file_name), encoding="utf-8")
        fh.setLevel(logging.INFO)

        # 设置日志的输出格式
        fm = logging.Formatter("%(asctime)s|%(levelname)s|%(filename)s|%(lineno)s|%(message)s|")

        # 将格式添加给输出器
        sh.setFormatter(fm)
        fh.setFormatter(fm)

        # 把输出器添加到记录器里
        self.logger.addHandler(sh)
        self.logger.addHandler(fh)


logger = MyLogger().logger

使用

from myLogger import logger # 自己的文件在哪就写哪里

logger.info("这是一条普通日志")
logger.warning("这是一条警告日志")
logger.error("这是一条错误日志")

错误等级对照表

级别数值描述典型使用场景
NOTSET0未设置级别(继承父Logger的级别)一般不直接使用
DEBUG10调试信息,记录详细运行流程开发阶段排查问题
INFO20常规信息,记录程序正常运行状态服务启动、配置加载成功
WARNING30警告信息,表明潜在问题(不影响程序运行)磁盘空间不足、参数缺省值替换
ERROR40错误信息,程序部分功能失效数据库连接失败、文件解析错误
CRITICAL50严重错误,程序可能崩溃系统关键资源耗尽、主线程退出
0

评论 (0)

取消