Parcourir la source

生成推荐中间过程的日志

MengyangDuan il y a 5 ans
Parent
commit
747187912d

+ 46 - 10
src/main/java/edu/nju/service/RecommendService.java

@@ -1,5 +1,7 @@
 package edu.nju.service;
 
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -463,10 +465,14 @@ public class RecommendService {
 
 	public void createSimilarBugLog(HttpSession session,List<BugMirror> mirrorList,List<Float> scores){
 		Bug userBug=constructUserBug(session);
-		JSONObject similarJson=new JSONObject();
-		similarJson.put("type","similarJson");
-		similarJson.put("userJson",new JSONObject(userBug));
-		JSONArray similarBugJSONArray=new JSONArray();
+		StringBuilder log=new StringBuilder("userJson:");
+		log.append(objectToStr(userBug,','));
+		log.append("\n");
+		log.append("similarJson:");
+//
+//		JSONObject similarJson=new JSONObject();
+//		similarJson.put("userJson",new JSONObject(userBug));
+//		JSONArray similarBugJSONArray=new JSONArray();
 
 		//如果传过来的列表是未排过序的,就需要自己排序
 //		Map<BugMirror,Float> hashMap=new HashMap<>();
@@ -489,16 +495,46 @@ public class RecommendService {
 
 		for(int i=0;i<mirrorList.size();i++){
 			Bug similarBug=bugdao.findByid(mirrorList.get(i).getId());
-			JSONObject similarBugJSONObject=new JSONObject();
-			similarBugJSONObject.put("bugDetail",new JSONObject(similarBug));
-			similarBugJSONObject.put("score",scores.get(i));
-			similarBugJSONArray.put(similarBugJSONObject);
+			log.append(objectToStr(similarBug,','));
+			log.append("score:"+scores.get(i)+",");
+			log.append("\n");
+//			JSONObject similarBugJSONObject=new JSONObject();
+//			similarBugJSONObject.put("bugDetail",new JSONObject(similarBug));
+//			similarBugJSONObject.put("score",scores.get(i));
+//			similarBugJSONArray.put(similarBugJSONObject);
 		}
 
-		similarJson.put("similarJson",similarBugJSONArray);
+//		similarJson.put("similarJson",similarBugJSONArray);
 
 		Logger logger= LoggerFactory.getLogger(RecommendService.class);
-		logger.info(String.valueOf(similarJson));
+		logger.info(String.valueOf(log));
+	}
+
+
+	private static StringBuilder objectToStr(Object o,char separator){
+		StringBuilder sb=new StringBuilder();
+		Field[] fields=o.getClass().getDeclaredFields();
+		String[] fieldNames=new String[fields.length];
+		for(int i=0;i<fields.length;i++){
+//            System.out.println(fields[i].getType());
+			fieldNames[i]=fields[i].getName();
+			sb.append(fieldNames[i]+":");
+			sb.append(getFieldValueByName(fieldNames[i],o));
+			sb.append(separator);
+		}
+		return sb;
+	}
+	private static Object getFieldValueByName(String fieldName, Object o) {
+		try {
+			String firstLetter = fieldName.substring(0, 1).toUpperCase();
+			String getter = "get" + firstLetter + fieldName.substring(1);
+			Method method = o.getClass().getMethod(getter, new Class[] {});
+			Object value = method.invoke(o, new Object[] {});
+			return value;
+		} catch (Exception e) {
+
+			return null;
+		}
 	}
 
 	private Bug constructUserBug( HttpSession session){

+ 1 - 3
src/main/resources/application.properties

@@ -10,6 +10,4 @@ spring.data.mongodb.uri= mongodb://localhost:27017/test
 spring.http.encoding.force = true
 spring.http.encoding.charset = UTF-8
 spring.http.encoding.enabled = true
-server.tomcat.uri-encoding = UTF-8
-
-logging.file=crowdsource-backend.log
+server.tomcat.uri-encoding = UTF-8

+ 40 - 0
src/main/resources/logback.xml

@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<configuration>
+
+    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
+
+    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>logs/crowdsource-backend.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>logs/crowdsource-backend.log.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <maxHistory>30</maxHistory>
+        </rollingPolicy>
+        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+            <maxFileSize>10MB</maxFileSize>
+        </triggeringPolicy>
+        <encoder>
+            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n</pattern>
+            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
+        </encoder>
+    </appender>
+
+    <appender name="recommendAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>logs/recommend.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>logs/recommend.log.%d{yyyy-MM-dd}.log</fileNamePattern>
+        </rollingPolicy>
+        <encoder>
+            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
+        </encoder>
+    </appender>
+
+    <logger name="edu.nju.service" level="DEBUG" additivity="false">
+        <appender-ref ref="recommendAppender" />
+    </logger>
+
+    <root level="INFO">
+        <appender-ref ref="FILE"></appender-ref>
+    </root>
+
+</configuration>