""" Attack Logger Wrapper ======================== """ import sys import logging class Logger: """An abstract class for different methods of logging attack results.""" def __init__(self, save_path=r'logger.log'): # # 设置日志的基本配置。这会配置root logger。 # logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') # # 配置日志记录器 # logging.basicConfig(level=logging.WARNING, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') # # self.logger = logging.getLogger() # # self.filter = KeywordFilter('xxx') # 替换为你想拒绝的关键词 # self.logger.addFilter(self.filter) # # self.console_handler = logging.StreamHandler() # self.logger.addHandler(self.console_handler) # self.file_handler = logging.FileHandler(save_path) # formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') # self.file_handler.setFormatter(formatter) # self.logger.addHandler(self.file_handler) # 日志格式 logging.basicConfig( stream=sys.stdout, level=logging.INFO, format="%(asctime)s [%(filename)s line:%(lineno)d] %(levelname)s: %(message)s", datefmt="%Y-%m-%d %H:%M:%S" ) # 默认为root,可以指定 logging.getLogger(__name__) self.logger = logging.getLogger() def log_attack_result(self, result, examples_completed=None): pass def log_summary_rows(self, rows, title, window_id): pass def log_hist(self, arr, numbins, title, window_id): pass def log_sep(self): pass def flush(self): pass def close(self): pass class KeywordFilter(logging.Filter): def __init__(self, keyword): self.keyword = keyword def filter(self, record): # 检查日志记录的消息中是否包含关键词 return self.keyword not in record.getMessage() # 创建一个日志器 # 创建并添加过滤器