This repository has been archived on 2024-04-10. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
elektron/elektronLogging/logger.go

50 lines
1.3 KiB
Go
Raw Normal View History

2019-11-13 11:19:04 -05:00
package elektronLogging
import (
log "github.com/sirupsen/logrus"
2019-11-20 13:33:46 -05:00
. "github.com/spdfg/elektron/elektronLogging/types"
"strings"
2019-11-20 13:33:46 -05:00
"time"
2019-11-13 11:19:04 -05:00
)
var config LoggerConfig
var logger *log.Logger
var formatter ElektronFormatter
var ElektronLog *LoggerImpl
2019-11-13 11:19:04 -05:00
func BuildLogger(prefix string) {
2019-11-13 11:19:04 -05:00
2019-11-20 13:33:46 -05:00
// read configuration from yaml
2019-11-13 11:19:04 -05:00
config.GetConfig()
2019-11-20 13:33:46 -05:00
// create the log directory
2019-11-13 11:19:04 -05:00
startTime := time.Now()
formatter.TimestampFormat = "2006-01-02 15:04:05"
formattedStartTime := startTime.Format("20060102150405")
2019-11-13 11:19:04 -05:00
GetLogDir(startTime, "_")
prefix = strings.Join([]string{prefix, formattedStartTime}, "_")
2019-11-20 13:33:46 -05:00
//create a single logrus instance and set its formatter to ElektronFormatter
2019-11-13 11:19:04 -05:00
logger = log.New()
logger.SetFormatter(&formatter)
2019-11-20 13:33:46 -05:00
// create a chain of loggers
head := &LoggerImpl{}
2019-11-20 13:33:46 -05:00
cLog := NewConsoleLogger(CONSOLE, prefix)
pLog := NewPcpLogger(PCP, prefix)
2019-11-13 11:19:04 -05:00
schedTraceLog := NewSchedTraceLogger(SCHED_TRACE, prefix)
spsLog := NewSchedPolicySwitchLogger(SPS, prefix)
schedWindowLog := NewSchedWindowLogger(SCHED_WINDOW, prefix)
tskDistLog := NewClsfnTaskDistOverheadLogger(CLSFN_TASKDIST_OVERHEAD, prefix)
head.SetNext(cLog)
cLog.SetNext(pLog)
pLog.SetNext(schedTraceLog)
schedTraceLog.SetNext(spsLog)
spsLog.SetNext(schedWindowLog)
schedWindowLog.SetNext(tskDistLog)
ElektronLog = head
2019-11-13 11:19:04 -05:00
}