From 1715fcb4d8c98c1e0cfa2006a6cb34c3721d8d47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BC=BA?= <1206709430@qq.com> Date: Fri, 31 Mar 2023 10:30:39 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=96=B0=E5=8A=9F=E8=83=BD:=20=E5=AE=8C?= =?UTF-8?q?=E5=96=84=E6=97=A5=E5=BF=97=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/dvadmin/utils/log.py | 37 ++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/backend/dvadmin/utils/log.py b/backend/dvadmin/utils/log.py index e8081f4c6..9586c64e6 100644 --- a/backend/dvadmin/utils/log.py +++ b/backend/dvadmin/utils/log.py @@ -1,28 +1,37 @@ import logging import os.path -from logging import LogRecord +import sys -from django.core.servers.basehttp import WSGIRequestHandler +from django.db import connection from loguru import logger from logging.handlers import RotatingFileHandler # 1.🎖️先声明一个类继承logging.Handler(制作一件品如的衣服) -from loguru._defaults import LOGURU_FORMAT +from application.dispatch import is_tenants_mode -class InterceptTimedRotatingFileHandler(RotatingFileHandler): + +class InterceptTimedRotatingFileHandler(RotatingFileHandler, logging.Filter): """ 自定义反射时间回滚日志记录器 缺少命名空间 """ def __init__(self, filename, when='d', interval=1, backupCount=5, encoding="utf-8", delay=False, utc=False, - maxBytes=1024 * 1024 * 100, atTime=None, logging_levels="all"): + maxBytes=1024 * 1024 * 100, atTime=None, logging_levels="all", format=None): super(InterceptTimedRotatingFileHandler, self).__init__(filename) filename = os.path.abspath(filename) + # 定义默认格式 + if not format: + format = "{time:YYYY-MM-DD HH:mm:ss.SSS} | {extra[ip]}:{extra[port]} | {level: <8}| {name}:{function}:{line} - {message}" when = when.lower() # 2.🎖️需要本地用不同的文件名做为不同日志的筛选器 + logger.configure( + handlers=[ + dict(sink=sys.stderr, format=format), + ], + ) self.logger_ = logger.bind(sime=filename, ip="-", port="-", username="张三") self.filename = filename key_map = { @@ -74,7 +83,7 @@ class InterceptTimedRotatingFileHandler(RotatingFileHandler): # self.logger_.remove(file_key[filename_fmt_key]) self.logger_.add( filename_fmt, - # format="{time:YYYY-MM-DD HH:mm:ss.SSS} | {extra[ip]}:{extra[port]} | {level: <8}| {name}:{function}:{line} - {message}", + format=format, retention=retention, encoding=encoding, level=self.level, @@ -100,13 +109,17 @@ class InterceptTimedRotatingFileHandler(RotatingFileHandler): # 设置自定义属性 port = "-" ip = "-" - locals_self = frame.f_locals.get('self', None) + details = frame.f_locals.get('details', None) msg = self.format(record) - if locals_self and hasattr(locals_self, 'client_address'): - ip, port = locals_self.client_address - # - 127.0.0.1:56525 - - msg = f"{ip}:{port} - {msg}" + bind = {} + if details and details.get('client'): + ip, port = details.get('client').split(':') + if is_tenants_mode(): + bind["schema_name"] = connection.tenant.schema_name + bind["domain_url"] = getattr(connection.tenant, 'domain_url', None) + bind["ip"] = ip + bind["port"] = port self.logger_ \ .opt(depth=depth, exception=record.exc_info, colors=True) \ - .bind(ip=ip, port=port) \ + .bind(**bind) \ .log(level, msg) -- Gitee From c126c704a449f9e01c8037ce68120cc89c6808ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BC=BA?= <1206709430@qq.com> Date: Fri, 31 Mar 2023 10:31:38 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=96=B0=E5=8A=9F=E8=83=BD:=20=E5=88=A0?= =?UTF-8?q?=E9=99=A4gunicorn.pid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/.gitignore | 1 + backend/gunicorn.pid | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 backend/gunicorn.pid diff --git a/backend/.gitignore b/backend/.gitignore index f22f635a2..7119be0c5 100644 --- a/backend/.gitignore +++ b/backend/.gitignore @@ -97,3 +97,4 @@ db.sqlite3 media/ __pypackages__/ package-lock.json +gunicorn.pid diff --git a/backend/gunicorn.pid b/backend/gunicorn.pid deleted file mode 100644 index 7f8f011eb..000000000 --- a/backend/gunicorn.pid +++ /dev/null @@ -1 +0,0 @@ -7 -- Gitee