优化功能:
- 将可变的配置项单独放置在配置包config-->settings文件中;
- 日志文件存放log包下【如果没有需要提前新建】,并且日志文件是按照日期来命名每天的日志单独存放;
日志格式:
2022-07-13 22:35:11,256 - log_utils.py[line:51] - DEBUG: BUG
2022-07-13 22:35:11,256 - log_utils.py[line:52] - ERROR: 错误
config-settings.py 文件内容加入
import os
def get_log_path():
project_path = os.path.dirname(os.path.dirname(__file__))
log_path = project_path + os.sep + "log"
return log_path
utils包下logutil.py参考如下
import os
import logging
import time
from config.settings import get_log_path
class LogUtil(object):
def __init__(self):
# 创建 logger 对象
self.__logger = logging.getLogger("logger")
# 设置日志输出等级总开关
self.__logger.setLevel(logging.DEBUG)
# 避免日志重复
if not self.__logger.handlers:
# 创建控制台实例
sh = logging.StreamHandler()
'''
创建一个文件实例,如果文件不存在,就会自动创建;
mode 参数设置为追加;另外为防止乱码, encoding 参数设置为 utf-8 编码格式
'''
# 定义日志名称
self.log_name = '{}.log'.format(time.strftime("%Y-%m-%d", time.localtime()))
# 定义日志路径及文件名称
self.log_path_name = os.path.join(get_log_path(), self.log_name)
fh1 = logging.FileHandler(self.log_path_name, mode='a', encoding='utf-8')
# 设置控制台输出的日志级别
sh.setLevel(logging.DEBUG)
# 设置向文件输出的日志级别
fh1.setLevel(logging.DEBUG)
# 统一设置日志的输出格式
formatter = logging.Formatter('%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
# 设置向控制台输出的日志格式
sh.setFormatter(formatter)
# 设置向文件输出的日志格式
fh1.setFormatter(formatter)
# 加载控制台实例到 logger 对象中
self.__logger.addHandler(sh)
sh.close()
# 加载文件实例到 logger 对象中
self.__logger.addHandler(fh1)
fh1.close()
def getLogger(self):
return self.__logger
if __name__ == '__main__':
logger = LogUtil().getLogger()
logger.debug('BUG')
logger.error('错误')
其余参考之前一篇博客:python中logging库使用总结_小杜℃的博客-CSDN博客_logging 库



