Source code for pdf_analyzer.logger.setup_logger


import sys
import logging
from datetime import datetime
from pathlib import Path
import os


[docs]def setup_logger(): logger_name="grobid_logger" logger = logging.getLogger(logger_name) logger.setLevel(logging.DEBUG) now_time_str=datetime.now().strftime('d_%m_%Y') logs_dir = os.path.abspath("logs") file_dir = os.path.join(logs_dir,logger_name+"_"+now_time_str) if not os.path.exists(file_dir): os.makedirs(file_dir) # Create handlers for logging to the standard output and a file stdout_handler = logging.StreamHandler(stream=sys.stdout) err_handler = logging.FileHandler(os.path.join(file_dir,"error.log"),delay=True) warn_handler = logging.FileHandler(os.path.join(file_dir,"warn.log"),delay=True) warning_handler = logging.FileHandler(os.path.join(file_dir,"warning.log"),delay=True) info_handler = logging.FileHandler(os.path.join(file_dir,"info.log"),delay=True) debug_handler = logging.FileHandler(os.path.join(file_dir,"debug.log"),delay=True) critical_handler = logging.FileHandler(os.path.join(file_dir,"critical.log"),delay=True) fatal_handler = logging.FileHandler(os.path.join(file_dir,"fatal.log"),delay=True) # Set the log levels on the handlers stdout_handler.setLevel(logging.DEBUG) err_handler.setLevel(logging.ERROR) warn_handler.setLevel(logging.WARN) info_handler.setLevel(logging.INFO) critical_handler.setLevel(logging.CRITICAL) debug_handler.setLevel(logging.DEBUG) warning_handler.setLevel(logging.WARNING) fatal_handler.setLevel(logging.FATAL) # Create a log format using Log Record attributes fmt = logging.Formatter( "%(name)s: %(asctime)s | %(levelname)s | %(filename)s:%(lineno)s | %(process)d >>> %(message)s" ) # Set the log format on each handler stdout_handler.setFormatter(fmt) err_handler.setFormatter(fmt) warn_handler.setFormatter(fmt) info_handler.setFormatter(fmt) critical_handler.setFormatter(fmt) debug_handler.setFormatter(fmt) warning_handler.setFormatter(fmt) fatal_handler.setFormatter(fmt) # Add each handler to the Logger object logger.addHandler(stdout_handler) logger.addHandler(err_handler) logger.addHandler(warn_handler) logger.addHandler(info_handler) logger.addHandler(critical_handler) logger.addHandler(debug_handler) logger.addHandler(warning_handler) logger.addHandler(fatal_handler) return logger