From abadb9a328865d7e405e4c0791bb6009b2938cbd Mon Sep 17 00:00:00 2001
From: Akash Kothawale <akash@decached.com>
Date: Fri, 2 Feb 2018 19:15:48 -0500
Subject: [PATCH] degCol: Logger for storing degree of colocation

degCol: logger
---
 logging/def/degColLogger.go    | 9 +++++++++
 logging/def/logType.go         | 1 +
 logging/def/logger.go          | 1 +
 logging/def/loggerFactory.go   | 8 ++++++++
 logging/def/loggerObservers.go | 7 +++++++
 5 files changed, 26 insertions(+)
 create mode 100644 logging/def/degColLogger.go

diff --git a/logging/def/degColLogger.go b/logging/def/degColLogger.go
new file mode 100644
index 0000000..9b9d0c7
--- /dev/null
+++ b/logging/def/degColLogger.go
@@ -0,0 +1,9 @@
+package logging
+
+type DegColLogger struct {
+	loggerObserverImpl
+}
+
+func (pl *DegColLogger) Log(message string) {
+	pl.logObserverSpecifics[degColLogger].logFile.Println(message)
+}
diff --git a/logging/def/logType.go b/logging/def/logType.go
index 8125154..c206ef5 100644
--- a/logging/def/logType.go
+++ b/logging/def/logType.go
@@ -13,6 +13,7 @@ var (
 	SUCCESS     = messageNametoMessageType("SUCCESS")
 	SCHED_TRACE = messageNametoMessageType("SCHED_TRACE")
 	PCP         = messageNametoMessageType("PCP")
+	DEG_COL     = messageNametoMessageType("DEG_COL")
 )
 
 // Text colors for the different types of log messages.
diff --git a/logging/def/logger.go b/logging/def/logger.go
index 5817651..e6236a4 100644
--- a/logging/def/logger.go
+++ b/logging/def/logger.go
@@ -18,6 +18,7 @@ func newLogger() *LoggerDriver {
 			SCHED_TRACE: true,
 			SUCCESS:     true,
 			PCP:         true,
+			DEG_COL:     true,
 		},
 	}
 	return logger
diff --git a/logging/def/loggerFactory.go b/logging/def/loggerFactory.go
index 5073579..ba82312 100644
--- a/logging/def/loggerFactory.go
+++ b/logging/def/loggerFactory.go
@@ -11,6 +11,7 @@ const (
 	conLogger        = "console-logger"
 	schedTraceLogger = "schedTrace-logger"
 	pcpLogger        = "pcp-logger"
+	degColLogger     = "degCol-logger"
 )
 
 // Logger class factory
@@ -18,6 +19,7 @@ var Loggers map[string]loggerObserver = map[string]loggerObserver{
 	conLogger:        nil,
 	schedTraceLogger: nil,
 	pcpLogger:        nil,
+	degColLogger:     nil,
 }
 
 // Logger options to help initialize loggers
@@ -37,6 +39,7 @@ func withLoggerSpecifics(prefix string) loggerOption {
 			conLogger:        &specifics{},
 			schedTraceLogger: &specifics{},
 			pcpLogger:        &specifics{},
+			degColLogger:     &specifics{},
 		}
 		l.(*loggerObserverImpl).setLogFilePrefix(prefix)
 		l.(*loggerObserverImpl).setLogFile()
@@ -58,6 +61,9 @@ func attachAllLoggers(lg *LoggerDriver, startTime time.Time, prefix string) {
 	Loggers[pcpLogger] = &PCPLogger{
 		loggerObserverImpl: *loi,
 	}
+	Loggers[degColLogger] = &DegColLogger{
+		loggerObserverImpl: *loi,
+	}
 
 	for _, lmt := range GetLogMessageTypes() {
 		switch lmt {
@@ -73,6 +79,8 @@ func attachAllLoggers(lg *LoggerDriver, startTime time.Time, prefix string) {
 			lg.attach(SUCCESS, Loggers[conLogger])
 		case PCP.String():
 			lg.attach(PCP, Loggers[pcpLogger])
+		case DEG_COL.String():
+			lg.attach(DEG_COL, Loggers[degColLogger])
 		}
 	}
 }
diff --git a/logging/def/loggerObservers.go b/logging/def/loggerObservers.go
index 6427a9f..e401f53 100644
--- a/logging/def/loggerObservers.go
+++ b/logging/def/loggerObservers.go
@@ -70,6 +70,13 @@ func (loi *loggerObserverImpl) setLogFilePrefix(prefix string) {
 		schedTraceLogFilePrefix = loi.logDirectory + "/" + schedTraceLogFilePrefix
 	}
 	loi.logObserverSpecifics[schedTraceLogger].logFilePrefix = schedTraceLogFilePrefix
+
+	// Setting logFilePrefix for degCol logger
+	degColLogFilePrefix := prefix + "_degCol.log"
+	if loi.logDirectory != "" {
+		schedTraceLogFilePrefix = loi.logDirectory + "/" + degColLogFilePrefix
+	}
+	loi.logObserverSpecifics[degColLogger].logFilePrefix = degColLogFilePrefix
 }
 
 func (loi *loggerObserverImpl) setLogDirectory(dirName string) {