Moved the 'logDir' and 'logger' global variables into 'loggerImpl' struct Renamed struct names and interface name
54 lines
1.5 KiB
Go
54 lines
1.5 KiB
Go
package elektronLogging
|
|
|
|
import (
|
|
"os"
|
|
"strings"
|
|
"time"
|
|
|
|
log "github.com/sirupsen/logrus"
|
|
. "github.com/spdfg/elektron/elektronLogging/types"
|
|
)
|
|
|
|
var config LoggerConfig
|
|
var formatter ElektronFormatter
|
|
var ElektronLogger *loggerImpl
|
|
|
|
func BuildLogger(prefix string, logConfigFilename string) {
|
|
|
|
// Read configuration from yaml.
|
|
config.GetConfig(logConfigFilename)
|
|
|
|
// Create the log directory.
|
|
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.
|
|
prefix = strings.Join([]string{prefix, formattedStartTime}, "_")
|
|
logger := &log.Logger{
|
|
Out: os.Stderr,
|
|
Level: log.DebugLevel,
|
|
Formatter: &formatter,
|
|
}
|
|
|
|
// Create a chain of loggers.
|
|
b := &baseLogData{data: log.Fields{}}
|
|
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)
|
|
|
|
ElektronLogger = head
|
|
}
|