2019-11-13 11:19:04 -05:00
package elektronLogging
import (
2019-11-20 13:33:46 -05:00
"fmt"
2019-11-13 11:19:04 -05:00
log "github.com/sirupsen/logrus"
2019-11-20 13:33:46 -05:00
. "github.com/spdfg/elektron/elektronLogging/types"
"strconv"
"time"
2019-11-13 11:19:04 -05:00
)
var config LoggerConfig
var logger * log . Logger
var formatter ElektronFormatter
func BuildLogger ( ) * LoggerImpl {
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"
GetLogDir ( startTime , "_" )
2019-11-20 13:33:46 -05:00
prefix := fmt . Sprintf ( "_%d%d%s%s%s%s" , startTime . Year ( ) , startTime . Month ( ) , strconv . Itoa ( startTime . Day ( ) ) ,
strconv . Itoa ( startTime . Hour ( ) ) , strconv . Itoa ( startTime . Minute ( ) ) , strconv . Itoa ( startTime . Second ( ) ) )
//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-13 14:08:52 -05:00
2019-11-20 13:33:46 -05:00
// create a chain of loggers
2019-11-13 11:19:04 -05:00
head := new ( 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 )
return head
}
var ElektronLog = BuildLogger ( )