From 18905b29a63e9b7cb7559bb38b863ec829d8f0f6 Mon Sep 17 00:00:00 2001
From: Neil-Jocelyn Schark <neil.schark@h-da.de>
Date: Thu, 19 Sep 2024 12:25:51 +0000
Subject: [PATCH] improve logging

---
 akms-simulator/Dockerfile        |  1 +
 akms-simulator/akms-simulator.go | 15 +++++++++++++--
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/akms-simulator/Dockerfile b/akms-simulator/Dockerfile
index 2bb8f1e8..2286f467 100644
--- a/akms-simulator/Dockerfile
+++ b/akms-simulator/Dockerfile
@@ -14,6 +14,7 @@ RUN --mount=type=cache,target=/root/go/pkg/mod \
 FROM ${GITLAB_PROXY}debian:12-slim AS debian
 RUN apt-get update && apt-get upgrade -y
 COPY --from=builder app/artifacts/akms-simulator /usr/bin/akms-simulator
+RUN mkdir /logs
 
 EXPOSE 4444
 ENTRYPOINT ["/usr/bin/akms-simulator"]
diff --git a/akms-simulator/akms-simulator.go b/akms-simulator/akms-simulator.go
index 6edfe88c..c45501a2 100644
--- a/akms-simulator/akms-simulator.go
+++ b/akms-simulator/akms-simulator.go
@@ -12,6 +12,11 @@ import (
 	"github.com/sirupsen/logrus"
 )
 
+const (
+	// LogFile is the file where the log is stored.
+	LogFilePath = "/logs/akms-simulator.log"
+)
+
 type LogFile struct {
 	Source string            `json:"source"`
 	Body   PushKSAKeyRequest `json:"body"`
@@ -79,7 +84,7 @@ func main() {
 
 func getLogFile(w http.ResponseWriter, r *http.Request) {
 	logrus.Info("Log file requested")
-	http.ServeFile(w, r, "akms-simulator.log")
+	http.ServeFile(w, r, LogFilePath)
 }
 
 func handlePushKsaKey(w http.ResponseWriter, r *http.Request) {
@@ -116,7 +121,7 @@ func handlePushKsaKey(w http.ResponseWriter, r *http.Request) {
 	}
 
 	// Append jsonLogFile to akms-logfile.log
-	f, err := os.OpenFile("akms-simulator.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
+	f, err := os.OpenFile(LogFilePath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
 	if err != nil {
 		logrus.Errorf("Error opening log file: %s", err)
 		w.WriteHeader(http.StatusInternalServerError)
@@ -128,6 +133,12 @@ func handlePushKsaKey(w http.ResponseWriter, r *http.Request) {
 		w.WriteHeader(http.StatusInternalServerError)
 		return
 	}
+	// Write the newline character
+	if _, err := f.Write([]byte("\n")); err != nil {
+		logrus.Errorf("Error writing newline to log file: %s", err)
+		w.WriteHeader(http.StatusInternalServerError)
+		return
+	}
 
 	w.WriteHeader(http.StatusNoContent)
 }
-- 
GitLab