mirror of
https://github.com/langgenius/dify.git
synced 2024-11-16 03:32:23 +08:00
refactor: add logging extension module for log initialization (#9524)
Some checks are pending
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/amd64, build-api-amd64) (push) Waiting to run
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/arm64, build-api-arm64) (push) Waiting to run
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/amd64, build-web-amd64) (push) Waiting to run
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/arm64, build-web-arm64) (push) Waiting to run
Build and Push API & Web / create-manifest (api, DIFY_API_IMAGE_NAME, merge-api-images) (push) Blocked by required conditions
Build and Push API & Web / create-manifest (web, DIFY_WEB_IMAGE_NAME, merge-web-images) (push) Blocked by required conditions
Some checks are pending
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/amd64, build-api-amd64) (push) Waiting to run
Build and Push API & Web / build (api, DIFY_API_IMAGE_NAME, linux/arm64, build-api-arm64) (push) Waiting to run
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/amd64, build-web-amd64) (push) Waiting to run
Build and Push API & Web / build (web, DIFY_WEB_IMAGE_NAME, linux/arm64, build-web-arm64) (push) Waiting to run
Build and Push API & Web / create-manifest (api, DIFY_API_IMAGE_NAME, merge-api-images) (push) Blocked by required conditions
Build and Push API & Web / create-manifest (web, DIFY_WEB_IMAGE_NAME, merge-web-images) (push) Blocked by required conditions
This commit is contained in:
parent
ac24300274
commit
83b2b8fe60
|
@ -10,9 +10,6 @@ if os.environ.get("DEBUG", "false").lower() != "true":
|
||||||
grpc.experimental.gevent.init_gevent()
|
grpc.experimental.gevent.init_gevent()
|
||||||
|
|
||||||
import json
|
import json
|
||||||
import logging
|
|
||||||
import sys
|
|
||||||
from logging.handlers import RotatingFileHandler
|
|
||||||
|
|
||||||
from flask import Flask, Response, request
|
from flask import Flask, Response, request
|
||||||
from flask_cors import CORS
|
from flask_cors import CORS
|
||||||
|
@ -27,6 +24,7 @@ from extensions import (
|
||||||
ext_compress,
|
ext_compress,
|
||||||
ext_database,
|
ext_database,
|
||||||
ext_hosting_provider,
|
ext_hosting_provider,
|
||||||
|
ext_logging,
|
||||||
ext_login,
|
ext_login,
|
||||||
ext_mail,
|
ext_mail,
|
||||||
ext_migrate,
|
ext_migrate,
|
||||||
|
@ -70,43 +68,7 @@ def create_flask_app_with_configs() -> Flask:
|
||||||
|
|
||||||
def create_app() -> Flask:
|
def create_app() -> Flask:
|
||||||
app = create_flask_app_with_configs()
|
app = create_flask_app_with_configs()
|
||||||
|
|
||||||
app.secret_key = app.config["SECRET_KEY"]
|
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)
|
initialize_extensions(app)
|
||||||
register_blueprints(app)
|
register_blueprints(app)
|
||||||
register_commands(app)
|
register_commands(app)
|
||||||
|
@ -117,6 +79,7 @@ def create_app() -> Flask:
|
||||||
def initialize_extensions(app):
|
def initialize_extensions(app):
|
||||||
# Since the application instance is now created, pass it to each Flask
|
# Since the application instance is now created, pass it to each Flask
|
||||||
# extension instance to bind it to the Flask application instance (app)
|
# extension instance to bind it to the Flask application instance (app)
|
||||||
|
ext_logging.init_app(app)
|
||||||
ext_compress.init_app(app)
|
ext_compress.init_app(app)
|
||||||
ext_code_based_extension.init()
|
ext_code_based_extension.init()
|
||||||
ext_database.init_app(app)
|
ext_database.init_app(app)
|
||||||
|
|
43
api/extensions/ext_logging.py
Normal file
43
api/extensions/ext_logging.py
Normal file
|
@ -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
|
Loading…
Reference in New Issue
Block a user