Parcourir la source

refactor: add logging extension module for log initialization (#9524)

tags/0.10.1
zhuhao il y a 1 an
Parent
révision
83b2b8fe60
Aucun compte lié à l'adresse e-mail de l'auteur
2 fichiers modifiés avec 45 ajouts et 39 suppressions
  1. 2
    39
      api/app_factory.py
  2. 43
    0
      api/extensions/ext_logging.py

+ 2
- 39
api/app_factory.py Voir le fichier

@@ -10,9 +10,6 @@ if os.environ.get("DEBUG", "false").lower() != "true":
grpc.experimental.gevent.init_gevent()

import json
import logging
import sys
from logging.handlers import RotatingFileHandler

from flask import Flask, Response, request
from flask_cors import CORS
@@ -27,6 +24,7 @@ from extensions import (
ext_compress,
ext_database,
ext_hosting_provider,
ext_logging,
ext_login,
ext_mail,
ext_migrate,
@@ -70,43 +68,7 @@ def create_flask_app_with_configs() -> Flask:

def create_app() -> Flask:
app = create_flask_app_with_configs()

app.secret_key = app.config["SECRET_KEY"]

log_handlers = None
log_file = app.config.get("LOG_FILE")
if log_file:
log_dir = os.path.dirname(log_file)
os.makedirs(log_dir, exist_ok=True)
log_handlers = [
RotatingFileHandler(
filename=log_file,
maxBytes=1024 * 1024 * 1024,
backupCount=5,
),
logging.StreamHandler(sys.stdout),
]

logging.basicConfig(
level=app.config.get("LOG_LEVEL"),
format=app.config.get("LOG_FORMAT"),
datefmt=app.config.get("LOG_DATEFORMAT"),
handlers=log_handlers,
force=True,
)
log_tz = app.config.get("LOG_TZ")
if log_tz:
from datetime import datetime

import pytz

timezone = pytz.timezone(log_tz)

def time_converter(seconds):
return datetime.utcfromtimestamp(seconds).astimezone(timezone).timetuple()

for handler in logging.root.handlers:
handler.formatter.converter = time_converter
initialize_extensions(app)
register_blueprints(app)
register_commands(app)
@@ -117,6 +79,7 @@ def create_app() -> Flask:
def initialize_extensions(app):
# Since the application instance is now created, pass it to each Flask
# extension instance to bind it to the Flask application instance (app)
ext_logging.init_app(app)
ext_compress.init_app(app)
ext_code_based_extension.init()
ext_database.init_app(app)

+ 43
- 0
api/extensions/ext_logging.py Voir le fichier

@@ -0,0 +1,43 @@
import logging
import os
import sys
from logging.handlers import RotatingFileHandler

from flask import Flask


def init_app(app: Flask):
log_handlers = None
log_file = app.config.get("LOG_FILE")
if log_file:
log_dir = os.path.dirname(log_file)
os.makedirs(log_dir, exist_ok=True)
log_handlers = [
RotatingFileHandler(
filename=log_file,
maxBytes=1024 * 1024 * 1024,
backupCount=5,
),
logging.StreamHandler(sys.stdout),
]

logging.basicConfig(
level=app.config.get("LOG_LEVEL"),
format=app.config.get("LOG_FORMAT"),
datefmt=app.config.get("LOG_DATEFORMAT"),
handlers=log_handlers,
force=True,
)
log_tz = app.config.get("LOG_TZ")
if log_tz:
from datetime import datetime

import pytz

timezone = pytz.timezone(log_tz)

def time_converter(seconds):
return datetime.utcfromtimestamp(seconds).astimezone(timezone).timetuple()

for handler in logging.root.handlers:
handler.formatter.converter = time_converter

Chargement…
Annuler
Enregistrer