Merge branch 'main' of https://gitee.com/wg123/video-gen
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
from logging.handlers import TimedRotatingFileHandler
|
|
||||||
|
|
||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
from sqlalchemy.ext.asyncio import AsyncSession
|
from sqlalchemy.ext.asyncio import AsyncSession
|
||||||
@@ -13,28 +12,53 @@ from app.services.credits import add_credits
|
|||||||
from app.utils.id_gen import generate_id, generate_order_no
|
from app.utils.id_gen import generate_id, generate_order_no
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Payment logger → logs/payment/YYYY-MM-DD.log (one file per day, keep 30 days)
|
# Payment logger → log/payment/YYYY-MM-DD.log (one file per day, no cleanup)
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
import time as _time
|
||||||
|
|
||||||
logger = logging.getLogger("payment")
|
logger = logging.getLogger("payment")
|
||||||
logger.setLevel(logging.INFO)
|
logger.setLevel(logging.INFO)
|
||||||
|
|
||||||
_log_dir = os.path.join(os.path.dirname(os.path.dirname(__file__)), "log", "payment")
|
_log_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), "log", "payment")
|
||||||
os.makedirs(_log_dir, exist_ok=True)
|
os.makedirs(_log_dir, exist_ok=True)
|
||||||
|
|
||||||
_file_handler = TimedRotatingFileHandler(
|
|
||||||
os.path.join(_log_dir, "payment.log"),
|
class DailyFileHandler(logging.FileHandler):
|
||||||
when="midnight",
|
"""Write to a file named by date, e.g. log/payment/2026-06-10.log"""
|
||||||
interval=1,
|
|
||||||
backupCount=0,
|
def __init__(self, directory, encoding="utf-8"):
|
||||||
encoding="utf-8",
|
self._directory = directory
|
||||||
utc=False,
|
self._current_date = ""
|
||||||
)
|
self._file_handler = None
|
||||||
_file_handler.suffix = "%Y-%m-%d"
|
super().__init__(self._make_path(), mode="a", encoding=encoding, delay=False)
|
||||||
_file_handler.setFormatter(logging.Formatter(
|
|
||||||
|
def _make_path(self):
|
||||||
|
date_str = _time.strftime("%Y-%m-%d")
|
||||||
|
self._current_date = date_str
|
||||||
|
return os.path.join(self._directory, f"{date_str}.log")
|
||||||
|
|
||||||
|
def emit(self, record):
|
||||||
|
date_str = _time.strftime("%Y-%m-%d")
|
||||||
|
if date_str != self._current_date:
|
||||||
|
# Day rolled over — switch to a new file
|
||||||
|
if self._file_handler:
|
||||||
|
self._file_handler.close()
|
||||||
|
self.baseFilename = self._make_path()
|
||||||
|
self._file_handler = logging.FileHandler(
|
||||||
|
self.baseFilename, mode="a", encoding=self.encoding
|
||||||
|
)
|
||||||
|
self._file_handler.setFormatter(self.formatter)
|
||||||
|
self._current_date = date_str
|
||||||
|
self.stream = self._file_handler.stream
|
||||||
|
super().emit(record)
|
||||||
|
|
||||||
|
|
||||||
|
_handler = DailyFileHandler(_log_dir)
|
||||||
|
_handler.setFormatter(logging.Formatter(
|
||||||
"[%(asctime)s] %(levelname)s %(message)s", datefmt="%Y-%m-%d %H:%M:%S"
|
"[%(asctime)s] %(levelname)s %(message)s", datefmt="%Y-%m-%d %H:%M:%S"
|
||||||
))
|
))
|
||||||
if not logger.handlers:
|
if not logger.handlers:
|
||||||
logger.addHandler(_file_handler)
|
logger.addHandler(_handler)
|
||||||
|
|
||||||
# Orders pending payment for longer than this are auto-cancelled
|
# Orders pending payment for longer than this are auto-cancelled
|
||||||
ORDER_EXPIRE_MINUTES = 5
|
ORDER_EXPIRE_MINUTES = 5
|
||||||
|
|||||||
Reference in New Issue
Block a user