mirror of
				https://github.com/PaddlePaddle/PaddleOCR.git
				synced 2025-10-31 09:49:30 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			66 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserve.
 | |
| #
 | |
| # 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 sys
 | |
| import logging
 | |
| import functools
 | |
| import paddle.distributed as dist
 | |
| 
 | |
| logger_initialized = {}
 | |
| 
 | |
| 
 | |
| @functools.lru_cache()
 | |
| def get_logger(name='srnet', log_file=None, log_level=logging.INFO):
 | |
|     """Initialize and get a logger by name.
 | |
|     If the logger has not been initialized, this method will initialize the
 | |
|     logger by adding one or two handlers, otherwise the initialized logger will
 | |
|     be directly returned. During initialization, a StreamHandler will always be
 | |
|     added. If `log_file` is specified a FileHandler will also be added.
 | |
|     Args:
 | |
|         name (str): Logger name.
 | |
|         log_file (str | None): The log filename. If specified, a FileHandler
 | |
|             will be added to the logger.
 | |
|         log_level (int): The logger level. Note that only the process of
 | |
|             rank 0 is affected, and other processes will set the level to
 | |
|             "Error" thus be silent most of the time.
 | |
|     Returns:
 | |
|         logging.Logger: The expected logger.
 | |
|     """
 | |
|     logger = logging.getLogger(name)
 | |
|     if name in logger_initialized:
 | |
|         return logger
 | |
|     for logger_name in logger_initialized:
 | |
|         if name.startswith(logger_name):
 | |
|             return logger
 | |
| 
 | |
|     formatter = logging.Formatter(
 | |
|         '[%(asctime)s] %(name)s %(levelname)s: %(message)s',
 | |
|         datefmt="%Y/%m/%d %H:%M:%S")
 | |
| 
 | |
|     stream_handler = logging.StreamHandler(stream=sys.stdout)
 | |
|     stream_handler.setFormatter(formatter)
 | |
|     logger.addHandler(stream_handler)
 | |
|     if log_file is not None and dist.get_rank() == 0:
 | |
|         log_file_folder = os.path.split(log_file)[0]
 | |
|         os.makedirs(log_file_folder, exist_ok=True)
 | |
|         file_handler = logging.FileHandler(log_file, 'a')
 | |
|         file_handler.setFormatter(formatter)
 | |
|         logger.addHandler(file_handler)
 | |
|     if dist.get_rank() == 0:
 | |
|         logger.setLevel(log_level)
 | |
|     else:
 | |
|         logger.setLevel(logging.ERROR)
 | |
|     logger_initialized[name] = True
 | |
|     return logger
 | 
