|
import logging |
|
import os |
|
import sys |
|
from logging.handlers import RotatingFileHandler |
|
|
|
from flask import Flask |
|
|
|
from configs import dify_config |
|
|
|
|
|
def init_app(app: Flask): |
|
log_handlers = None |
|
log_file = dify_config.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=dify_config.LOG_FILE_MAX_SIZE * 1024 * 1024, |
|
backupCount=dify_config.LOG_FILE_BACKUP_COUNT, |
|
), |
|
logging.StreamHandler(sys.stdout), |
|
] |
|
|
|
logging.basicConfig( |
|
level=dify_config.LOG_LEVEL, |
|
format=dify_config.LOG_FORMAT, |
|
datefmt=dify_config.LOG_DATEFORMAT, |
|
handlers=log_handlers, |
|
force=True, |
|
) |
|
log_tz = dify_config.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 |
|
|