zhiyinya/AIStudioBuildWS
0
1import logging2 3def setup_logging(log_file, prefix=None, level=logging.INFO):4 """5 配置日志记录器,使其输出到文件和控制台。6 支持一个可选的前缀,用于标识日志来源。7 8 每次调用都会重新配置处理器,以适应多进程环境。9 10 :param log_file: 日志文件的路径。11 :param prefix: (可选) 要添加到每条日志消息开头的字符串前缀。12 :param level: 日志级别。13 """14 logger = logging.getLogger('my_app_logger') 15 logger.setLevel(level)16 17 if logger.hasHandlers():18 logger.handlers.clear()19 20 base_format = '%(asctime)s - %(process)d - %(levelname)s - %(message)s'21 22 if prefix:23 log_format = f'%(asctime)s - %(process)d - %(levelname)s - {prefix} - %(message)s'24 else:25 log_format = base_format26 27 fh = logging.FileHandler(log_file)28 fh.setLevel(level)29 30 ch = logging.StreamHandler()31 ch.setLevel(level)32 33 formatter = logging.Formatter(log_format)34 fh.setFormatter(formatter)35 ch.setFormatter(formatter)36 37 logger.addHandler(fh)38 logger.addHandler(ch)39 40 logger.propagate = False41 42 return logger