| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | 
							- import logging
 
- import os
 
- import sys
 
- import uuid
 
- from logging.handlers import RotatingFileHandler
 
- import flask
 
- from configs import dify_config
 
- from dify_app import DifyApp
 
- def init_app(app: DifyApp):
 
-     log_handlers: list[logging.Handler] = []
 
-     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.append(
 
-             RotatingFileHandler(
 
-                 filename=log_file,
 
-                 maxBytes=dify_config.LOG_FILE_MAX_SIZE * 1024 * 1024,
 
-                 backupCount=dify_config.LOG_FILE_BACKUP_COUNT,
 
-             )
 
-         )
 
-     # Always add StreamHandler to log to console
 
-     sh = logging.StreamHandler(sys.stdout)
 
-     sh.addFilter(RequestIdFilter())
 
-     log_handlers.append(sh)
 
-     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.fromtimestamp(seconds, tz=timezone).timetuple()
 
-         for handler in logging.root.handlers:
 
-             if handler.formatter:
 
-                 handler.formatter.converter = time_converter
 
- def get_request_id():
 
-     if getattr(flask.g, "request_id", None):
 
-         return flask.g.request_id
 
-     new_uuid = uuid.uuid4().hex[:10]
 
-     flask.g.request_id = new_uuid
 
-     return new_uuid
 
- class RequestIdFilter(logging.Filter):
 
-     # This is a logging filter that makes the request ID available for use in
 
-     # the logging format. Note that we're checking if we're in a request
 
-     # context, as we may want to log things before Flask is fully loaded.
 
-     def filter(self, record):
 
-         record.req_id = get_request_id() if flask.has_request_context() else ""
 
-         return True
 
 
  |