kaspad/apiserver/logger/logger.go
Ori Newman 2402bae1ff [NOD-410] Add log level CLI argument to API server (#503)
* [NOD-410] Add log level CLI argument to API server

* [NOD-410] Add comments

* [NOD-410] Remove pre-allocation of one item
2019-12-01 17:24:12 +02:00

48 lines
1.4 KiB
Go

package logger
import (
"fmt"
"github.com/daglabs/btcd/logs"
"github.com/pkg/errors"
"os"
)
// BackendLog is the logging backend used to create all subsystem loggers.
var BackendLog = logs.NewBackend()
var loggers []logs.Logger
// InitLog attaches log file and error log file to the backend log.
func InitLog(logFile, errLogFile string) {
err := BackendLog.AddLogFile(logFile, logs.LevelTrace)
if err != nil {
fmt.Fprintf(os.Stderr, "Error adding log file %s as log rotator for level %s: %s", logFile, logs.LevelTrace, err)
os.Exit(1)
}
err = BackendLog.AddLogFile(errLogFile, logs.LevelWarn)
if err != nil {
fmt.Fprintf(os.Stderr, "Error adding log file %s as log rotator for level %s: %s", errLogFile, logs.LevelWarn, err)
os.Exit(1)
}
}
// Logger returns a new logger for a particular subsystem that writes to
// BackendLog, and add it to a slice so it will be possible to access it
// later and change its log level
func Logger(subsystemTag string) logs.Logger {
logger := BackendLog.Logger(subsystemTag)
loggers = append(loggers, logger)
return logger
}
// SetLogLevels sets the logging level for all of the subsystems in the API server.
func SetLogLevels(level string) error {
lvl, ok := logs.LevelFromString(level)
if !ok {
return errors.Errorf("Invalid log level %s", level)
}
for _, logger := range loggers {
logger.SetLevel(lvl)
}
return nil
}