Log retrieval method compatible with the original interface
(self, name, file_name, without_formater=False, print_to_console=False)
| 96 | return logging.getLogger(f"fastdeploy.{name}") |
| 97 | |
| 98 | def get_trace_logger(self, name, file_name, without_formater=False, print_to_console=False): |
| 99 | """ |
| 100 | Log retrieval method compatible with the original interface |
| 101 | """ |
| 102 | |
| 103 | log_dir = envs.FD_LOG_DIR |
| 104 | if not os.path.exists(log_dir): |
| 105 | os.makedirs(log_dir, exist_ok=True) |
| 106 | |
| 107 | is_debug = int(envs.FD_DEBUG) |
| 108 | # logger = logging.getLogger(name) |
| 109 | # Use namespace for isolation to avoid logger overwrite and confusion issues for compatibility with original interface |
| 110 | legacy_name = f"legacy.{name}" |
| 111 | logger = logging.getLogger(legacy_name) |
| 112 | |
| 113 | # Set log level |
| 114 | if is_debug: |
| 115 | logger.setLevel(level=logging.DEBUG) |
| 116 | else: |
| 117 | logger.setLevel(level=logging.INFO) |
| 118 | |
| 119 | # Set formatter |
| 120 | formatter = CustomFormatter( |
| 121 | "[%(asctime)s] [%(levelname)-8s] (%(filename)s:%(funcName)s:%(lineno)d) %(message)s" |
| 122 | ) |
| 123 | |
| 124 | # Clear existing handlers (maintain original logic) |
| 125 | for handler in logger.handlers[:]: |
| 126 | logger.removeHandler(handler) |
| 127 | |
| 128 | # Create main log file handler |
| 129 | LOG_FILE = f"{log_dir}/{file_name}" |
| 130 | backup_count = int(envs.FD_LOG_BACKUP_COUNT) |
| 131 | # handler = LazyFileHandler(filename=LOG_FILE, backupCount=backup_count, level=hanlder_level) |
| 132 | handler = DailyRotatingFileHandler(LOG_FILE, backupCount=backup_count) |
| 133 | |
| 134 | # Create ERROR log file handler (new feature) |
| 135 | if not file_name.endswith(".log"): |
| 136 | file_name = f"{file_name}.log" if "." not in file_name else file_name.split(".")[0] + ".log" |
| 137 | ERROR_LOG_FILE = os.path.join(log_dir, file_name.replace(".log", "_error.log")) |
| 138 | error_handler = LazyFileHandler( |
| 139 | filename=ERROR_LOG_FILE, backupCount=backup_count, level=logging.ERROR, formatter=None |
| 140 | ) |
| 141 | |
| 142 | if not without_formater: |
| 143 | handler.setFormatter(formatter) |
| 144 | error_handler.setFormatter(formatter) |
| 145 | |
| 146 | # Add file handlers |
| 147 | logger.addHandler(handler) |
| 148 | logger.addHandler(error_handler) |
| 149 | |
| 150 | # Console handler |
| 151 | if print_to_console: |
| 152 | console_handler = logging.StreamHandler() |
| 153 | if not without_formater: |
| 154 | console_handler.setFormatter(formatter) |
| 155 | logger.addHandler(console_handler) |