mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-06-20 13:06:38 +00:00

* [NOD-410] Add log level CLI argument to API server * [NOD-410] Add comments * [NOD-410] Remove pre-allocation of one item
48 lines
1.4 KiB
Go
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
|
|
}
|