Spaces:
Runtime error
Runtime error
| # 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. | |
| """ | |
| This code is refer from: | |
| https://github.com/WenmuZhou/PytorchOCR/blob/master/torchocr/utils/logging.py | |
| """ | |
| import os | |
| import sys | |
| import logging | |
| import functools | |
| import paddle.distributed as dist | |
| logger_initialized = {} | |
| def get_logger(name='ppocr', log_file=None, log_level=logging.DEBUG): | |
| """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 | |
| logger.propagate = False | |
| return logger | |