| 
				
			 | 
			
			 | 
			@@ -1,8 +1,11 @@ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			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 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -22,11 +25,14 @@ def init_app(app: DifyApp): | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    # Always add StreamHandler to log to console | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    log_handlers.append(logging.StreamHandler(sys.stdout)) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    sh = logging.StreamHandler(sys.stdout) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    sh.addFilter(RequestIdFilter()) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    log_formatter = logging.Formatter(fmt=dify_config.LOG_FORMAT) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    sh.setFormatter(log_formatter) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    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, | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -44,3 +50,22 @@ def init_app(app: DifyApp): | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        for handler in logging.root.handlers: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            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 |