2019-11-13 11:19:04 -05:00
package elektronLogging
import (
2019-11-21 14:12:53 -05:00
log "github.com/sirupsen/logrus"
2019-11-20 13:33:46 -05:00
. "github.com/spdfg/elektron/elektronLogging/types"
2019-11-21 13:05:52 -05:00
"os"
2019-11-20 16:11:33 -05:00
"strings"
2019-11-20 13:33:46 -05:00
"time"
2019-11-13 11:19:04 -05:00
)
var config LoggerConfig
2019-11-21 14:12:53 -05:00
var logger * log . Logger
2019-11-13 11:19:04 -05:00
var formatter ElektronFormatter
2019-11-20 16:11:33 -05:00
var ElektronLog * LoggerImpl
2019-11-21 13:47:22 -05:00
var logDir logDirectory
2019-11-13 11:19:04 -05:00
2019-11-20 16:11:33 -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
2019-11-21 14:12:53 -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"
2019-11-20 16:11:33 -05:00
formattedStartTime := startTime . Format ( "20060102150405" )
2019-11-21 14:02:47 -05:00
2019-11-21 13:47:22 -05:00
logDir . createLogDir ( prefix , startTime )
2019-11-21 14:02:47 -05:00
prefix = strings . Join ( [ ] string { prefix , formattedStartTime } , "_" )
2019-11-21 14:12:53 -05:00
logger = & log . Logger {
2019-11-21 13:05:52 -05:00
Out : os . Stderr ,
2019-11-21 14:12:53 -05:00
Level : log . DebugLevel ,
2019-11-21 13:05:52 -05:00
Formatter : & formatter ,
}
2019-11-13 14:08:52 -05:00
2019-11-20 13:33:46 -05:00
// create a chain of loggers
2019-11-20 16:11:33 -05:00
head := & LoggerImpl { }
2019-11-20 13:33:46 -05:00
cLog := NewConsoleLogger ( CONSOLE , prefix )
2019-11-26 12:48:48 -05:00
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 )
2019-11-21 15:26:57 -05:00
tskDistLog := NewClsfnTaskDistrOverheadLogger ( CLSFN_TASKDIST_OVERHEAD , prefix )
2019-11-13 11:19:04 -05:00
head . SetNext ( cLog )
cLog . SetNext ( pLog )
pLog . SetNext ( schedTraceLog )
schedTraceLog . SetNext ( spsLog )
spsLog . SetNext ( schedWindowLog )
schedWindowLog . SetNext ( tskDistLog )
2019-11-20 16:11:33 -05:00
ElektronLog = head
2019-11-13 11:19:04 -05:00
}