package com.seecoder.dataanalysis.config; import com.nju.edu.logTracking.LogConsumer; import com.seecoder.dataanalysis.data.dao.util.ParsingExceptionInfoDao; import com.seecoder.dataanalysis.logic.parser.LogParsingService; import com.seecoder.dataanalysis.logic.parser.ParsingException; import com.seecoder.dataanalysis.util.LoggerUtil; import com.seecoder.dataanalysis.vo.SimpleLog; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class LogTrackingConfig { private static final Logger logger = LoggerUtil.getLogger(LogTrackingConfig.class); @Autowired LogParsingService logParsingService; @Autowired ParsingExceptionInfoDao parsingExceptionInfoDao; @Bean public void LogTrackingConfigurator() { //需新建LogConsumer类型的对象,实现run方法 //run方法参数value为接收到的json格式的log,每次接收到log都会执行run方法 LogConsumer myConsumer = new LogConsumer() { @Override public void run(String value) { try { LoggerUtil.info(logger, "get log: " + value); SimpleLog sl = logParsingService.parseLog(value); logParsingService.parseLogData(sl, true); } catch (ParsingException e) { e.printStackTrace(); LoggerUtil.info(logger, e.toString()); parsingExceptionInfoDao.save(e.convertToEntity()); } catch (Exception e) { LoggerUtil.info(logger, e.toString()); e.printStackTrace(); } } }; //需使用此函数以开启消费 myConsumer.processLog(); LoggerUtil.info(logger, "log tracking Start successfully"); } }