LogTracingUtil.java 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package com.nju.edu.eval.util;
  2. import Utils.LogBuilder;
  3. import client.LogTrackingClient;
  4. import com.alibaba.fastjson.JSON;
  5. import com.alibaba.fastjson.serializer.SerializerFeature;
  6. import com.nju.edu.eval.data.entity.Exam;
  7. import com.nju.edu.eval.model.vo.logdata.AnswerDTO;
  8. import com.nju.edu.eval.model.vo.logdata.ExamLog;
  9. import com.nju.edu.eval.model.vo.logdata.ExamRecordLog;
  10. import com.nju.edu.logTracking.enums.SeecSystem;
  11. import lombok.extern.slf4j.Slf4j;
  12. import org.slf4j.Logger;
  13. import java.util.Date;
  14. import java.util.List;
  15. import java.util.stream.Collectors;
  16. @Slf4j
  17. public class LogTracingUtil {
  18. private static final Logger logger = LoggerUtil.getLogger(LogTracingUtil.class);
  19. public static void logToAnalysis(String data, int type) {
  20. // String data = "This is an example";
  21. //此为logBuilder,若不想使用也可自己构建log
  22. //注:此logBuilder在调用build方法时会自动添加created_time属性,值为当前时间戳
  23. String logData = "";
  24. try {
  25. logData= LogBuilder
  26. .getBuilder()
  27. .target(SeecSystem.EVAL.getName()) // 等待分配enum后修改
  28. .source(SeecSystem.EVAL.getName())
  29. .operationType(type)
  30. .data(data)
  31. .message("OK")
  32. .build();
  33. //最简单使用方法,默认为medium级别
  34. // LogTrackingClient
  35. // .getClient()
  36. // .log(logData)
  37. // .publish();
  38. //LoggerUtil.info(logger, "SMART--->" + log);
  39. LoggerUtil.info(logger, "SMART--->" + logData);
  40. }catch(Exception e){
  41. LoggerUtil.info(logger, "SMART--->" + logData);
  42. //System.out.println("构建日志数据失败");
  43. e.printStackTrace();
  44. }
  45. }
  46. public static void logExam(Exam exam, int type) {
  47. try {
  48. List<AnswerDTO> answerDTOS = exam.getQuestionAndScore().entrySet().stream().
  49. map(et -> new AnswerDTO(et.getKey(), et.getValue())).collect(Collectors.toList());
  50. double totalGrade = exam.getQuestionAndScore().values().stream().collect(Collectors.summarizingInt(x -> x.intValue())).getSum();
  51. ExamLog examLog = new ExamLog(exam.getId(), totalGrade, answerDTOS, exam.getDifficulty(), new Date(), exam.getStartTime(), exam.getEndTime());
  52. logToAnalysis(JSON.toJSONStringWithDateFormat(examLog, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteDateUseDateFormat), type);
  53. }catch (Exception e){
  54. System.out.println("构建日志数据失败");
  55. e.printStackTrace();
  56. }
  57. }
  58. public static void logRecord(ExamRecordLog examRecordLog) {
  59. logToAnalysis(JSON.toJSONStringWithDateFormat(examRecordLog, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteDateUseDateFormat), 2);
  60. }
  61. }