From 830908b6232bf706535af7773c526ad0c76e7b70 Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Fri, 28 Jun 2019 09:24:34 +0200
Subject: [PATCH] OO-3609: fix the feedback process for errors after changes on
 patterns

---
 .../core/dispatcher/ErrorFeedbackMailer.java  |  7 +--
 .../exception/ExceptionWindowController.java  |  4 +-
 .../org/olat/core/logging/LogFileParser.java  | 47 +++++++------------
 src/main/resources/log4j2.xml                 |  4 ++
 4 files changed, 23 insertions(+), 39 deletions(-)

diff --git a/src/main/java/org/olat/core/dispatcher/ErrorFeedbackMailer.java b/src/main/java/org/olat/core/dispatcher/ErrorFeedbackMailer.java
index deea3f6f0f5..ffe4e66c5d4 100644
--- a/src/main/java/org/olat/core/dispatcher/ErrorFeedbackMailer.java
+++ b/src/main/java/org/olat/core/dispatcher/ErrorFeedbackMailer.java
@@ -74,7 +74,7 @@ public class ErrorFeedbackMailer implements Dispatcher {
 	}
 
 	/**
-	 * send email to olat support with user submitted error informaition
+	 * send email to support with user submitted error information
 	 * 
 	 * @param request
 	 */
@@ -105,7 +105,6 @@ public class ErrorFeedbackMailer implements Dispatcher {
 			}
 		} catch (Exception e) {
 			handleException(request, e);
-			return;
 		}
 	}
 
@@ -116,10 +115,6 @@ public class ErrorFeedbackMailer implements Dispatcher {
 				+ username + " with content: " + feedback, e);
 	}
 
-	/**
-	 * @see org.olat.core.dispatcher.Dispatcher#execute(javax.servlet.http.HttpServletRequest,
-	 *      javax.servlet.http.HttpServletResponse, java.lang.String)
-	 */
 	@Override
 	public void execute(HttpServletRequest request, HttpServletResponse response) {
 		sendMail(request);
diff --git a/src/main/java/org/olat/core/gui/exception/ExceptionWindowController.java b/src/main/java/org/olat/core/gui/exception/ExceptionWindowController.java
index 7c77fdb74a1..d21fa61d51b 100644
--- a/src/main/java/org/olat/core/gui/exception/ExceptionWindowController.java
+++ b/src/main/java/org/olat/core/gui/exception/ExceptionWindowController.java
@@ -194,8 +194,8 @@ public class ExceptionWindowController extends DefaultChiefController {
 		msg.contextPut("username", curIdent == null? "n/a" : curIdent.getKey());
 		msg.contextPut("allowBackButton", Boolean.valueOf(allowBackButton));
 		msg.contextPut("detailedmessage", detailedmessage);
-		// Cluster NodeId + E-Nr
-		msg.contextPut("errnum", Settings.getNodeInfo() + "-E"+ refNum);
+		// Cluster request reference number
+		msg.contextPut("errnum", "I" + refNum + "-J");
 		msg.contextPut("supportaddress", WebappHelper.getMailConfig("mailError"));
 		msg.contextPut("time", formatter.formatDateAndTime(new Date()));
 
diff --git a/src/main/java/org/olat/core/logging/LogFileParser.java b/src/main/java/org/olat/core/logging/LogFileParser.java
index 23559ca27ef..3b09a0023ea 100644
--- a/src/main/java/org/olat/core/logging/LogFileParser.java
+++ b/src/main/java/org/olat/core/logging/LogFileParser.java
@@ -146,20 +146,9 @@ public class LogFileParser {
 	 * @param s
 	 * @return errormsg
 	 */
-	private static String extractError(String s[]) {
-		StringBuilder sb = new StringBuilder();
-
-		if (s.length == 6) {
-			// before refactoring of logging.Tracing
-			sb.append("Date: " + Formatter.truncate(s[0].trim(), 20) + "\n");
-			sb.append("Error#: " + s[1].trim() + "\n");
-			sb.append("Identity: " + s[3].trim() + "\n");
-			sb.append("Category/Class: " + s[2].trim() + "\n");
-			sb.append("Log msg: " + s[4].trim() + "\n");
-			sb.append("Cause: "
-					+ s[5].trim().replaceAll(" at ", "\nat ").replaceAll(">>>", "\n>>>") + "\n");
-		} else if (s.length == 9) {
-			// the new Tracing
+	private static String extractError(String[] s) {
+		StringBuilder sb = new StringBuilder(2048);
+		if (s.length == 8) {
 			sb.append("Date: " + Formatter.truncate(s[0].trim(), 20) + "\n");
 			sb.append("Error#: " + s[1].trim() + "\n");
 			sb.append("Identity: " + s[3].trim() + "\n");
@@ -167,11 +156,11 @@ public class LogFileParser {
 			sb.append("Remote IP: " + s[4].trim() + "\n");
 			sb.append("Referer: " + s[5].trim() + "\n");
 			sb.append("User-Agent: " + s[6].trim() + "\n");
-			sb.append("Log msg: " + s[7].trim() + "\n");
-			sb.append("Cause: "
-					+ s[8].trim().replaceAll(" at ", "\nat ").replaceAll(">>>", "\n\n"));
+			sb.append("Exception: " + s[7].trim().replaceAll(" at ", "\nat ").replaceAll(">>>", "\n\n"));
 		} else {
-			throw new AssertException("Unknown Logfile format");
+			for(String st:s) {
+				sb.append("Raw msg: " + st + "\n");
+			}
 		}
 		return sb.toString();
 	}
@@ -208,10 +197,10 @@ public class LogFileParser {
 		String line;
 		String line2;
 		String memoryline = "empty";
-		String em[] = new String[10];
-		Collection<String> errormsg = new ArrayList<String>();
+		String[] em = new String[10];
+		Collection<String> errormsg = new ArrayList<>();
 
-		SimpleDateFormat sdb = new SimpleDateFormat("yyyy-MM-dd");
+		SimpleDateFormat sdb = new SimpleDateFormat("dd MM yyyy");
 		
 		String logfilepath;
 		if(date == null) {
@@ -235,8 +224,7 @@ public class LogFileParser {
 			return errormsg;
 		}
 			
-		try {
-			BufferedReader br = new BufferedReader(new FileReader(logFile));
+		try(BufferedReader br = new BufferedReader(new FileReader(logFile))) {
 			while ((line = br.readLine()) != null) {
 				if (counter == 0) {
 					errormsg.add(line);
@@ -247,7 +235,7 @@ public class LogFileParser {
 				} else if ( line.matches(matchError) || line.matches(matchWarn) ) {
 					line2 = line.replaceAll("[/^]", "/");
 					em = line2.split("/%/");
-					if (errorNumber.equals(em[1].trim())) {
+					if (em[1].trim().startsWith(errorNumber)) {
 						founderror++;
 						if (asHTML) {
 							line2 = extractErrorAsHTML(em);
@@ -262,14 +250,11 @@ public class LogFileParser {
 				}
 				memoryline = line;
 			}
-			br.close();
 
-			if (founderror > 0) {
-				if (counter < linecount) {
-					while (counter > 0) {
-						errormsg.add("empty");
-						counter--;
-					}
+			if (founderror > 0 && counter < linecount) {
+				while (counter > 0) {
+					errormsg.add("empty");
+					counter--;
 				}
 			}
 			
diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml
index c01351547ea..91691c74891 100644
--- a/src/main/resources/log4j2.xml
+++ b/src/main/resources/log4j2.xml
@@ -8,6 +8,10 @@
 			<PatternLayout
 				pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %marker %c{1} ^%%^ N${sys:nodeId}-R%X{ref}-M%sn ^%%^ %logger{36} ^%%^ %X{identityKey} ^%%^ %X{ip} ^%%^ %X{referer} ^%%^ %X{userAgent} ^%%^ %msg%ex{full,separator( )}%n" />
 			-->
+			<!-- This pattern is used on OpenOLAT cloud
+			<PatternLayout
+                    pattern="%d{dd MMM yyyy HH:mm:ss.SSS} [%t] %-5level %marker %c{1} ^%%^ I%X{ref}-J%sn ^%%^ %logger{36} ^%%^ %X{identityKey} ^%%^ %X{ip} ^%%^ %X{referer} ^%%^ %X{userAgent} ^%%^ %msg%ex{full,separator( )}%n" />
+			-->
 		</Console>
 	</Appenders>
 	<Loggers>
-- 
GitLab