Python 日志模块logging封装 快速调用方法

前言

  • Python 自带的 logging 模块来记录日志需要配置一些 Handler、Formatter 来进行一些处理,比如把日志输出到不同的位置,或者设置一个不同的输出格式,或者设置日志分块和备份,但是对于新手来说不太友好,所以决定封装一下。

将logging模块封装

  • 首先新建一个log.py的文件
    • 导入需要用到的Python包
import sys
import logging
from settings import *
from os import makedirs
from os.path import dirname, exists
  • 创建Logger类、init初始化函数、get_logger函数
class Logger(object):
	def __init__(self):
		pass
	def get_logger(self,name=None):
		pass
  • 初始化函数添加配置项
# 此处可以新建一个settings.py 来存储这些配置选项 如不想多建其他文件 也可直接在初始化配置
self.loggers = {}
self.LOG_ENABLED = LOG_ENABLED  # 是否开启日志
self.LOG_TO_CONSOLE = LOG_TO_CONSOLE  # 是否输出到控制台
self.LOG_TO_FILE = LOG_TO_FILE  # 是否输出到文件
self.LOG_PATH = LOG_PATH  # 日志文件路径
self.LOG_LEVEL = LOG_LEVEL  # 日志级别
self.LOG_FORMAT = LOG_FORMAT # 每条日志输出格式
  • get_logger函数 判断是否输出到控制台代码
if self.LOG_ENABLED and self.LOG_TO_CONSOLE:
	stream_handler = logging.StreamHandler(sys.stdout)
	stream_handler.setLevel(level=self.LOG_LEVEL)
	formatter = logging.Formatter(self.LOG_FORMAT)
	stream_handler.setFormatter(formatter)
	logger.addHandler(stream_handler)
  • get_logger函数 判断是否输出到文件代码
if self.LOG_ENABLED and self.LOG_TO_FILE:
	log_dir = dirname(self.LOG_PATH)
	if not exists(log_dir): makedirs(log_dir)
	file_handler = logging.FileHandler(self.LOG_PATH, encoding='utf-8')
	file_handler.setLevel(level=self.LOG_LEVEL)
	formatter = logging.Formatter(self.LOG_FORMAT)
	file_handler.setFormatter(formatter)
	logger.addHandler(file_handler)
  • 至此log.py文件就完成了
  • 在创建一个settings.py来存储log的配置选项(此文件可不创建直接在log.py的初始化函数中配置)
    • settings.py中配置代码
# 日志配置
# 是否开启log日志
LOG_ENABLED = os.getenv('LOG_ENABLED', 'True').upper() == 'TRUE'
# 是否输出到控制台
LOG_TO_CONSOLE = os.getenv('LOG_TO_CONSOLE', 'True').upper() == 'TRUE'
# 是否输出到文件
LOG_TO_FILE = os.getenv('LOG_TO_FILE', 'True').upper() == 'TRUE'
# 日志等级
LOG_LEVEL = os.getenv('LOG_LEVEL', 'DEBUG')
# 每条日志输出格式
log_format = '%(levelname)s - %(asctime)s - process: %(process)d - %(filename)s - %(name)s - %(lineno)d - %(module)s - %(message)s'
LOG_FORMAT = os.getenv('LOG_FORMAT', log_format)

# 项目绝对路径
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
# 日志存放路径
PATH = os.path.join(BASE_DIR, 'logs')
isExists = os.path.exists(PATH)
# 判断结果
if not isExists:
	# 如果不存在则创建目录
	os.makedirs(PATH)
now_date = datetime.datetime.now().strftime("%Y-%m-%d")
# 日志文件的绝对路径
LOG_PATH = os.path.join(PATH, f'proxy-log-{now_date}.log')

from log import Logger


log = Logger().get_logger()
  • 首先新建一个log.py的文件
    • 导入需要用到的Python包
from settings import log

log.debug('This is a debug message!')

log.error('This is an error message!')
  • 打印信息
DEBUG - 2021-11-24 17:37:37,238 - process: 23652 - test.py - log - 10 - test - This is a debug message!
ERROR - 2021-11-24 17:37:37,238 - process: 23652 - test.py - log - 12 - test - This is an error message!

Process finished with exit code 0

结语

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值