| 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 |
|
|