perf: Modify gunicorn log file rotate yesterday dir

pull/14141/head
Bai 3 months ago committed by Bryan
parent c8b1d892e3
commit e997236159

@ -0,0 +1,20 @@
import os
from logging.handlers import TimedRotatingFileHandler
from datetime import datetime, timedelta
class DailyTimedRotatingFileHandler(TimedRotatingFileHandler):
def rotator(self, source, dest):
""" Override the original method to rotate the log file daily."""
dest = self._get_rotate_dest_filename(source)
if os.path.exists(source) and not os.path.exists(dest):
# 存在多个服务进程时, 保证只有一个进程成功 rotate
os.rename(source, dest)
@staticmethod
def _get_rotate_dest_filename(source):
date_yesterday = (datetime.now() - timedelta(days=1)).strftime('%Y-%m-%d')
path = [os.path.dirname(source), date_yesterday, os.path.basename(source)]
filename = os.path.join(*path)
os.makedirs(os.path.dirname(filename), exist_ok=True)
return filename

@ -50,37 +50,33 @@ LOGGING = {
'file': { 'file': {
'encoding': 'utf8', 'encoding': 'utf8',
'level': 'DEBUG', 'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler', 'class': 'jumpserver.rewriting.logging.DailyTimedRotatingFileHandler',
'maxBytes': 1024 * 1024 * 100, 'when': 'midnight',
'backupCount': 7,
'formatter': 'main', 'formatter': 'main',
'filename': JUMPSERVER_LOG_FILE, 'filename': JUMPSERVER_LOG_FILE,
}, },
'ansible_logs': { 'ansible_logs': {
'encoding': 'utf8', 'encoding': 'utf8',
'level': 'DEBUG', 'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler', 'class': 'jumpserver.rewriting.logging.DailyTimedRotatingFileHandler',
'when': 'midnight',
'formatter': 'main', 'formatter': 'main',
'maxBytes': 1024 * 1024 * 100,
'backupCount': 7,
'filename': ANSIBLE_LOG_FILE, 'filename': ANSIBLE_LOG_FILE,
}, },
'drf_exception': { 'drf_exception': {
'encoding': 'utf8', 'encoding': 'utf8',
'level': 'DEBUG', 'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler', 'class': 'jumpserver.rewriting.logging.DailyTimedRotatingFileHandler',
'when': 'midnight',
'formatter': 'exception', 'formatter': 'exception',
'maxBytes': 1024 * 1024 * 100,
'backupCount': 7,
'filename': DRF_EXCEPTION_LOG_FILE, 'filename': DRF_EXCEPTION_LOG_FILE,
}, },
'unexpected_exception': { 'unexpected_exception': {
'encoding': 'utf8', 'encoding': 'utf8',
'level': 'DEBUG', 'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler', 'class': 'jumpserver.rewriting.logging.DailyTimedRotatingFileHandler',
'when': 'midnight',
'formatter': 'exception', 'formatter': 'exception',
'maxBytes': 1024 * 1024 * 100,
'backupCount': 7,
'filename': UNEXPECTED_EXCEPTION_LOG_FILE, 'filename': UNEXPECTED_EXCEPTION_LOG_FILE,
}, },
'syslog': { 'syslog': {
@ -155,3 +151,4 @@ if CONFIG.SYSLOG_ADDR != '' and len(CONFIG.SYSLOG_ADDR.split(':')) == 2:
if not os.path.isdir(LOG_DIR): if not os.path.isdir(LOG_DIR):
os.makedirs(LOG_DIR, mode=0o755) os.makedirs(LOG_DIR, mode=0o755)

Loading…
Cancel
Save