MCPcopy Create free account
hub / github.com/PaddlePaddle/FastDeploy / LazyFileHandler

Class LazyFileHandler

fastdeploy/logger/handlers.py:213–251  ·  view source on GitHub ↗

延迟创建日志文件的处理器,仅在首次写入日志时创建实际的文件处理器

Source from the content-addressed store, hash-verified

211
212
213class LazyFileHandler(logging.Handler):
214 """
215 延迟创建日志文件的处理器,仅在首次写入日志时创建实际的文件处理器
216 """
217
218 def __init__(self, filename, backupCount, level=logging.NOTSET, formatter=None):
219 super().__init__(level=level)
220 self.filename = filename
221 self.backupCount = backupCount
222 self.formatter = formatter
223 self._real_handler = None
224
225 def create_real_handler(self):
226 """创建实际的文件处理器"""
227 handler = DailyRotatingFileHandler(self.filename, backupCount=self.backupCount)
228 handler.setLevel(self.level)
229 if self.formatter:
230 handler.setFormatter(self.formatter)
231 return handler
232
233 def emit(self, record):
234 # 检查日志级别
235 if record.levelno < self.level:
236 return
237
238 self.acquire()
239 try:
240 if self._real_handler is None:
241 self._real_handler = self.create_real_handler()
242 finally:
243 self.release()
244 # 将日志记录传递给实际处理器
245 self._real_handler.emit(record)
246
247 def close(self):
248 # 关闭实际处理器(如果存在)
249 if self._real_handler is not None:
250 self._real_handler.close()
251 super().close()
252
253
254class DailyRotatingFileHandler(BaseRotatingHandler):

Callers 3

get_trace_loggerMethod · 0.90
_get_legacy_loggerMethod · 0.90

Calls

no outgoing calls

Tested by 1