mirror of
				https://github.com/infiniflow/ragflow.git
				synced 2025-10-31 01:40:20 +00:00 
			
		
		
		
	 7a6bf4326e
			
		
	
	
		7a6bf4326e
		
			
		
	
	
	
	
		
			
			### What problem does this PR solve? Fixed log not displaying ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue)
		
			
				
	
	
		
			75 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #
 | |
| #  Copyright 2024 The InfiniFlow Authors. All Rights Reserved.
 | |
| #
 | |
| #  Licensed under the Apache License, Version 2.0 (the "License");
 | |
| #  you may not use this file except in compliance with the License.
 | |
| #  You may obtain a copy of the License at
 | |
| #
 | |
| #      http://www.apache.org/licenses/LICENSE-2.0
 | |
| #
 | |
| #  Unless required by applicable law or agreed to in writing, software
 | |
| #  distributed under the License is distributed on an "AS IS" BASIS,
 | |
| #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
| #  See the License for the specific language governing permissions and
 | |
| #  limitations under the License.
 | |
| #
 | |
| import os
 | |
| import os.path
 | |
| import logging
 | |
| from logging.handlers import RotatingFileHandler
 | |
| 
 | |
| def get_project_base_directory():
 | |
|     PROJECT_BASE = os.path.abspath(
 | |
|         os.path.join(
 | |
|             os.path.dirname(os.path.realpath(__file__)),
 | |
|             os.pardir,
 | |
|             os.pardir,
 | |
|         )
 | |
|     )
 | |
|     return PROJECT_BASE
 | |
| 
 | |
| def initRootLogger(logfile_basename: str, log_format: str = "%(asctime)-15s %(levelname)-8s %(process)d %(message)s"):
 | |
|     logger = logging.getLogger()
 | |
|     if logger.hasHandlers():
 | |
|         return
 | |
| 
 | |
|     log_path = os.path.abspath(os.path.join(get_project_base_directory(), "logs", f"{logfile_basename}.log"))
 | |
| 
 | |
|     os.makedirs(os.path.dirname(log_path), exist_ok=True)
 | |
|     formatter = logging.Formatter(log_format)
 | |
| 
 | |
|     handler1 = RotatingFileHandler(log_path, maxBytes=10*1024*1024, backupCount=5)
 | |
|     handler1.setFormatter(formatter)
 | |
|     logger.addHandler(handler1)
 | |
| 
 | |
|     handler2 = logging.StreamHandler()
 | |
|     handler2.setFormatter(formatter)
 | |
|     logger.addHandler(handler2)
 | |
| 
 | |
|     logging.captureWarnings(True)
 | |
| 
 | |
|     LOG_LEVELS = os.environ.get("LOG_LEVELS", "")
 | |
|     pkg_levels = {}
 | |
|     for pkg_name_level in LOG_LEVELS.split(","):
 | |
|         terms = pkg_name_level.split("=")
 | |
|         if len(terms)!= 2:
 | |
|             continue
 | |
|         pkg_name, pkg_level = terms[0], terms[1]
 | |
|         pkg_name = pkg_name.strip()
 | |
|         pkg_level = logging.getLevelName(pkg_level.strip().upper())
 | |
|         if not isinstance(pkg_level, int):
 | |
|             pkg_level = logging.INFO
 | |
|         pkg_levels[pkg_name] = logging.getLevelName(pkg_level)
 | |
| 
 | |
|     for pkg_name in ['peewee', 'pdfminer']:
 | |
|         if pkg_name not in pkg_levels:
 | |
|             pkg_levels[pkg_name] = logging.getLevelName(logging.WARNING)
 | |
|     if 'root' not in pkg_levels:
 | |
|         pkg_levels['root'] = logging.getLevelName(logging.INFO)
 | |
| 
 | |
|     for pkg_name, pkg_level in pkg_levels.items():
 | |
|         pkg_logger = logging.getLogger(pkg_name)
 | |
|         pkg_logger.setLevel(pkg_level)
 | |
| 
 | |
|     msg = f"{logfile_basename} log path: {log_path}, log levels: {pkg_levels}"
 | |
|     logger.info(msg) |