comment—utils—financial_logging.py
import logging
import logging.handlers
from flask import request
import os
'''
定义日志的格式和日志输出的目标
'''
class RequestShoppingFormatter(logging.Formatter):
'''
自定义的日志输出格式
'''
def format(self, record):
record.url=request.url #需要在日志中记录请求地址
record.remote_addr=request.remote_addr #需要在日志中记录客户端的地址
return super().format(record)
#创建一个个性化的logger对象
def create_logger(app):
'''
设置日志的配置
:param app:Flask中app对象
:return:
'''
logging_file_dir=app.config['LOGGING_FILE_DIR'] #日志文件所在的目录
logging_file_max_bytes=app.config['LOGGING_FILE_MAX_BYTES'] #日志文件的最大的大小
logging_file_backup=app.config['LOGGING_FILE_BACKUP'] #保留备份的日志文件个数
logging_level=app.config['LOGGING_LEVEL'] #默认的日志级别
#设置日志输出的格式(针对文件)
request_formatter=RequestShoppingFormatter(
'[%(asctime)s] %(remote_addr)s 请求 %(url)s \t %(levelname)s 在 %(module)s %(lineno)d : %(message)s')
#检查如果目录不存在,则创建目录
if os.path.isdir(logging_file_dir):
pass
else:
os.mkdir(logging_file_dir) #如果目录不存在,创建目录
#自定义一个目录和日志文件,RotatingFileHandler:安装指定文件大小来规定日志文件的生产规则
# flask_file_handler=logging.handlers.RotatingFileHandler(filename=os.path.join(logging_file_dir,'financial.log'),
# maxBytes=logging_file_max_bytes,
# backupCount=logging_file_backup)
#为了让一个进程操作一个文件,文件名的命名:加上当前进程的ID
#TimedRotatingFileHandler:根据时间来规定日志文件的生成规则。
flask_file_handler = logging.handlers.TimedRotatingFileHandler(filename=os.path.join(logging_file_dir, 'financial'+'_'+str(os.getpid())+'.log'),
when='D',interval=1,
backupCount=logging_file_backup)
#给当前的handler设置格式
flask_file_handler.setFormatter(request_formatter)
#todo 得到一个logger对象,根据包(financial)的名字,用其他的包名不符合逻辑
flask_logger=logging.getLogger('financial')
flask_logger.addHandler(flask_file_handler)
flask_logger.setLevel(logging_level)
#整个项目需要两个handle:文件。控制台
flask_console_handler=logging.StreamHandler()
flask_console_handler.setFormatter(logging.Formatter('[%(asctime)s] %(levelname)s %(module)s %(lineno)d : %(message)s'))
#当项目运行环境是debug模式,才用控制台输出
if app.debug:
flask_logger.addHandler(flask_console_handler)
main.py中初始化日志处理的工具
from comment.utils.financial_logging import create_logger
create_logger(app)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/123354.html