python自定义logger日志输出文件

本文详细介绍了日志系统的设计与实现过程,解释了为什么在软件开发中使用日志的重要性,包括便于维护、调试代码及错误定位。通过具体示例web_logging.py,展示了如何创建一个日志类,设置日志格式、时间格式、输出路径,并实现了文件和控制台的日志输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么要写日志?
方便维护、方便调试代码、项目上线后,发现错误能快速定位到错误代码。

web_logging.py

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

# [logger]

# 默认日志格式
DEFAULT_LOG_FMT = '%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s: %(message)s'
# 默认时间格式
DEFUALT_LOG_DATEFMT = '%Y-%m-%d %H:%M:%S'
# 输出日志路径
import os
LOG_OUT_PATH = os.path.abspath('.') + '/logs/'

import sys
import logging
from time import strftime


class Logger(object):
    def __init__(self):
        self._logger = logging.getLogger()
        self.DEFAULT_LOG_FILENAME = '{0}{1}.log'.format(LOG_OUT_PATH, strftime("%Y-%m-%d"))
        self.formatter = logging.Formatter(fmt=DEFAULT_LOG_FMT, datefmt=DEFUALT_LOG_DATEFMT)
        self._logger.addHandler(self._get_file_handler(self.DEFAULT_LOG_FILENAME))
        self._logger.addHandler(self._get_console_handler())
        self._logger.setLevel(logging.INFO)  # 默认等级

    def _get_file_handler(self, filename):
        filehandler = logging.FileHandler(filename, encoding="utf-8")
        filehandler.setFormatter(self.formatter)
        return filehandler

    def _get_console_handler(self):
        console_handler = logging.StreamHandler(sys.stdout)
        console_handler.setFormatter(self.formatter)
        return console_handler

    @property
    def logger(self):
        return self._logger

test.py

from web_logging import Logger
logging = Logger().logger

 logging.info(u"{}:开始XXX操作".format(datetime.datetime.now()))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值