diff --git a/elektronLogging/clsfnTaskDistOverheadLogger.go b/elektronLogging/clsfnTaskDistOverheadLogger.go index c3f15cb..bd13429 100644 --- a/elektronLogging/clsfnTaskDistOverheadLogger.go +++ b/elektronLogging/clsfnTaskDistOverheadLogger.go @@ -9,16 +9,18 @@ import ( ) type ClsfnTaskDistrOverheadLogger struct { - LoggerImpl + loggerImpl } -func NewClsfnTaskDistrOverheadLogger(b *baseLogData, logType int, prefix string, logger *log.Logger) *ClsfnTaskDistrOverheadLogger { +func NewClsfnTaskDistrOverheadLogger(b *baseLogData, logType int, prefix string, + logger *log.Logger, logDir *logDirectory) *ClsfnTaskDistrOverheadLogger { cLog := &ClsfnTaskDistrOverheadLogger{} cLog.logType = logType - cLog.CreateLogFile(prefix) + cLog.logDir = logDir cLog.next = nil cLog.baseLogData = b cLog.logger = logger + cLog.createLogFile(prefix) return cLog } @@ -63,11 +65,11 @@ func (cLog ClsfnTaskDistrOverheadLogger) Logf(logType int, level log.Level, msgF } } -func (cLog *ClsfnTaskDistrOverheadLogger) CreateLogFile(prefix string) { +func (cLog *ClsfnTaskDistrOverheadLogger) createLogFile(prefix string) { if config.TaskDistrConfig.Enabled { filename := strings.Join([]string{prefix, config.TaskDistrConfig.FilenameExtension}, "") - dirName := logDir.getDirName() + dirName := cLog.logDir.getDirName() if dirName != "" { if logFile, err := os.Create(filepath.Join(dirName, filename)); err != nil { log.Fatal("Unable to create logFile: ", err) diff --git a/elektronLogging/consoleLogger.go b/elektronLogging/consoleLogger.go index 9091283..052fc30 100644 --- a/elektronLogging/consoleLogger.go +++ b/elektronLogging/consoleLogger.go @@ -1,24 +1,26 @@ package elektronLogging import ( + "fmt" + log "github.com/sirupsen/logrus" "os" "path/filepath" "strings" - - log "github.com/sirupsen/logrus" ) type ConsoleLogger struct { - LoggerImpl + loggerImpl } -func NewConsoleLogger(b *baseLogData, logType int, prefix string, logger *log.Logger) *ConsoleLogger { +func NewConsoleLogger(b *baseLogData, logType int, prefix string, + logger *log.Logger, logDir *logDirectory) *ConsoleLogger { cLog := &ConsoleLogger{} cLog.logType = logType - cLog.CreateLogFile(prefix) + cLog.logDir = logDir cLog.next = nil cLog.baseLogData = b cLog.logger = logger + cLog.createLogFile(prefix) return cLog } func (cLog ConsoleLogger) Log(logType int, level log.Level, message string) { @@ -58,11 +60,12 @@ func (cLog ConsoleLogger) Logf(logType int, level log.Level, msgFmtString string } } -func (cLog *ConsoleLogger) CreateLogFile(prefix string) { +func (cLog *ConsoleLogger) createLogFile(prefix string) { // Create log file for the type if it is enabled. if config.ConsoleConfig.Enabled { filename := strings.Join([]string{prefix, config.ConsoleConfig.FilenameExtension}, "") - dirName := logDir.getDirName() + dirName := cLog.logDir.getDirName() + fmt.Println(dirName) if dirName != "" { if logFile, err := os.Create(filepath.Join(dirName, filename)); err != nil { log.Fatal("Unable to create logFile: ", err) diff --git a/elektronLogging/logger.go b/elektronLogging/logger.go index 7bcf234..90c2b87 100644 --- a/elektronLogging/logger.go +++ b/elektronLogging/logger.go @@ -11,8 +11,7 @@ import ( var config LoggerConfig var formatter ElektronFormatter -var ElektronLogger *LoggerImpl -var logDir logDirectory +var ElektronLogger *loggerImpl func BuildLogger(prefix string, logConfigFilename string) { @@ -23,6 +22,7 @@ func BuildLogger(prefix string, logConfigFilename string) { startTime := time.Now() formatter.TimestampFormat = "2006-01-02 15:04:05" formattedStartTime := startTime.Format("20060102150405") + logDir := &logDirectory{} logDir.createLogDir(prefix, startTime) // Instantiate the logrus instance. @@ -35,20 +35,20 @@ func BuildLogger(prefix string, logConfigFilename string) { // Create a chain of loggers. b := &baseLogData{data: log.Fields{}} - head := &LoggerImpl{baseLogData: b} - cLog := NewConsoleLogger(b, CONSOLE, prefix, logger) - pLog := NewPCPLogger(b, PCP, prefix, logger) - schedTraceLog := NewSchedTraceLogger(b, SCHED_TRACE, prefix, logger) - spsLog := NewSchedPolicySwitchLogger(b, SPS, prefix, logger) - schedWindowLog := NewSchedWindowLogger(b, SCHED_WINDOW, prefix, logger) - tskDistLog := NewClsfnTaskDistrOverheadLogger(b, CLSFN_TASKDISTR_OVERHEAD, prefix, logger) + head := &loggerImpl{baseLogData: b} + cLog := NewConsoleLogger(b, CONSOLE, prefix, logger, logDir) + pLog := NewPCPLogger(b, PCP, prefix, logger, logDir) + schedTraceLog := NewSchedTraceLogger(b, SCHED_TRACE, prefix, logger, logDir) + spsLog := NewSchedPolicySwitchLogger(b, SPS, prefix, logger, logDir) + schedWindowLog := NewSchedWindowLogger(b, SCHED_WINDOW, prefix, logger, logDir) + tskDistLog := NewClsfnTaskDistrOverheadLogger(b, CLSFN_TASKDISTR_OVERHEAD, prefix, logger, logDir) - head.SetNext(cLog) - cLog.SetNext(pLog) - pLog.SetNext(schedTraceLog) - schedTraceLog.SetNext(spsLog) - spsLog.SetNext(schedWindowLog) - schedWindowLog.SetNext(tskDistLog) + head.setNext(cLog) + cLog.setNext(pLog) + pLog.setNext(schedTraceLog) + schedTraceLog.setNext(spsLog) + spsLog.setNext(schedWindowLog) + schedWindowLog.setNext(tskDistLog) ElektronLogger = head } diff --git a/elektronLogging/loggerChain.go b/elektronLogging/loggerChain.go index d4f6d38..a771257 100644 --- a/elektronLogging/loggerChain.go +++ b/elektronLogging/loggerChain.go @@ -5,51 +5,52 @@ import ( "os" ) -type Logger interface { - SetNext(logType Logger) +type logInterface interface { + setNext(logType logInterface) Log(logType int, level log.Level, message string) Logf(logType int, level log.Level, msgFmtString string, args ...interface{}) - CreateLogFile(prefix string) + createLogFile(prefix string) } type baseLogData struct { data log.Fields } -type LoggerImpl struct { +type loggerImpl struct { *baseLogData logType int allowOnConsole bool logFile *os.File - next Logger + next logInterface logger *log.Logger + logDir *logDirectory } -func (l *LoggerImpl) WithFields(logData log.Fields) *LoggerImpl { +func (l *loggerImpl) WithFields(logData log.Fields) *loggerImpl { l.data = logData return l } -func (l *LoggerImpl) WithField(key string, value string) *LoggerImpl { +func (l *loggerImpl) WithField(key string, value string) *loggerImpl { l.data[key] = value return l } -func (l *LoggerImpl) SetNext(logType Logger) { +func (l *loggerImpl) setNext(logType logInterface) { l.next = logType } -func (l LoggerImpl) Log(logType int, level log.Level, message string) { +func (l loggerImpl) Log(logType int, level log.Level, message string) { if l.next != nil { l.next.Log(logType, level, message) } } -func (l LoggerImpl) Logf(logType int, level log.Level, msgFmtString string, args ...interface{}) { +func (l loggerImpl) Logf(logType int, level log.Level, msgFmtString string, args ...interface{}) { if l.next != nil { l.next.Logf(logType, level, msgFmtString, args...) } } -func (l *LoggerImpl) resetFields() { +func (l *loggerImpl) resetFields() { l.data = nil l.data = log.Fields{} } diff --git a/elektronLogging/pcpLogger.go b/elektronLogging/pcpLogger.go index c7a498f..7dc8fd1 100644 --- a/elektronLogging/pcpLogger.go +++ b/elektronLogging/pcpLogger.go @@ -9,16 +9,18 @@ import ( ) type PCPLogger struct { - LoggerImpl + loggerImpl } -func NewPCPLogger(b *baseLogData, logType int, prefix string, logger *log.Logger) *PCPLogger { +func NewPCPLogger(b *baseLogData, logType int, prefix string, + logger *log.Logger, logDir *logDirectory) *PCPLogger { pLog := &PCPLogger{} pLog.logType = logType - pLog.CreateLogFile(prefix) + pLog.logDir = logDir pLog.next = nil pLog.baseLogData = b pLog.logger = logger + pLog.createLogFile(prefix) return pLog } @@ -63,10 +65,10 @@ func (pLog PCPLogger) Logf(logType int, level log.Level, msgFmtString string, ar } } -func (pLog *PCPLogger) CreateLogFile(prefix string) { +func (pLog *PCPLogger) createLogFile(prefix string) { if config.PCPConfig.Enabled { filename := strings.Join([]string{prefix, config.PCPConfig.FilenameExtension}, "") - dirName := logDir.getDirName() + dirName := pLog.logDir.getDirName() if dirName != "" { if logFile, err := os.Create(filepath.Join(dirName, filename)); err != nil { log.Fatal("Unable to create logFile: ", err) diff --git a/elektronLogging/schedPolicySwitchLogger.go b/elektronLogging/schedPolicySwitchLogger.go index 457889a..c3d555b 100644 --- a/elektronLogging/schedPolicySwitchLogger.go +++ b/elektronLogging/schedPolicySwitchLogger.go @@ -9,16 +9,18 @@ import ( ) type SchedPolicySwitchLogger struct { - LoggerImpl + loggerImpl } -func NewSchedPolicySwitchLogger(b *baseLogData, logType int, prefix string, logger *log.Logger) *SchedPolicySwitchLogger { +func NewSchedPolicySwitchLogger(b *baseLogData, logType int, prefix string, + logger *log.Logger, logDir *logDirectory) *SchedPolicySwitchLogger { sLog := &SchedPolicySwitchLogger{} sLog.logType = logType - sLog.CreateLogFile(prefix) + sLog.logDir = logDir sLog.next = nil sLog.baseLogData = b sLog.logger = logger + sLog.createLogFile(prefix) return sLog } @@ -63,10 +65,10 @@ func (sLog SchedPolicySwitchLogger) Logf(logType int, level log.Level, msgFmtStr } } -func (sLog *SchedPolicySwitchLogger) CreateLogFile(prefix string) { +func (sLog *SchedPolicySwitchLogger) createLogFile(prefix string) { if config.SPSConfig.Enabled { filename := strings.Join([]string{prefix, config.SPSConfig.FilenameExtension}, "") - dirName := logDir.getDirName() + dirName := sLog.logDir.getDirName() if dirName != "" { if logFile, err := os.Create(filepath.Join(dirName, filename)); err != nil { log.Fatal("Unable to create logFile: ", err) diff --git a/elektronLogging/schedTraceLogger.go b/elektronLogging/schedTraceLogger.go index 7ac1167..9174e80 100644 --- a/elektronLogging/schedTraceLogger.go +++ b/elektronLogging/schedTraceLogger.go @@ -9,16 +9,18 @@ import ( ) type SchedTraceLogger struct { - LoggerImpl + loggerImpl } -func NewSchedTraceLogger(b *baseLogData, logType int, prefix string, logger *log.Logger) *SchedTraceLogger { +func NewSchedTraceLogger(b *baseLogData, logType int, prefix string, + logger *log.Logger, logDir *logDirectory) *SchedTraceLogger { sLog := &SchedTraceLogger{} sLog.logType = logType - sLog.CreateLogFile(prefix) + sLog.logDir = logDir sLog.next = nil sLog.baseLogData = b sLog.logger = logger + sLog.createLogFile(prefix) return sLog } @@ -63,10 +65,10 @@ func (sLog SchedTraceLogger) Logf(logType int, level log.Level, msgFmtString str } } -func (sLog *SchedTraceLogger) CreateLogFile(prefix string) { +func (sLog *SchedTraceLogger) createLogFile(prefix string) { if config.SchedTraceConfig.Enabled { filename := strings.Join([]string{prefix, config.SchedTraceConfig.FilenameExtension}, "") - dirName := logDir.getDirName() + dirName := sLog.logDir.getDirName() if dirName != "" { if logFile, err := os.Create(filepath.Join(dirName, filename)); err != nil { log.Fatal("Unable to create logFile: ", err) diff --git a/elektronLogging/schedWindowLogger.go b/elektronLogging/schedWindowLogger.go index ce79483..75c6a50 100644 --- a/elektronLogging/schedWindowLogger.go +++ b/elektronLogging/schedWindowLogger.go @@ -9,16 +9,18 @@ import ( ) type SchedWindowLogger struct { - LoggerImpl + loggerImpl } -func NewSchedWindowLogger(b *baseLogData, logType int, prefix string, logger *log.Logger) *SchedWindowLogger { +func NewSchedWindowLogger(b *baseLogData, logType int, prefix string, + logger *log.Logger, logDir *logDirectory) *SchedWindowLogger { sLog := &SchedWindowLogger{} sLog.logType = logType - sLog.CreateLogFile(prefix) + sLog.logDir = logDir sLog.next = nil sLog.baseLogData = b sLog.logger = logger + sLog.createLogFile(prefix) return sLog } @@ -63,10 +65,10 @@ func (sLog SchedWindowLogger) Logf(logType int, level log.Level, msgFmtString st } } -func (sLog *SchedWindowLogger) CreateLogFile(prefix string) { +func (sLog *SchedWindowLogger) createLogFile(prefix string) { if config.SchedWindowConfig.Enabled { filename := strings.Join([]string{prefix, config.SchedWindowConfig.FilenameExtension}, "") - dirName := logDir.getDirName() + dirName := sLog.logDir.getDirName() if dirName != "" { if logFile, err := os.Create(filepath.Join(dirName, filename)); err != nil { log.Fatal("Unable to create logFile: ", err)