mirror of
https://github.com/juanfont/headscale.git
synced 2024-12-20 19:09:07 +01:00
73a00c89ff
This commit tries to detect if users can render colors in their terminal and only enables color logs if that is true. It also adds no-color.org's NO_COLOR env var support to allow it to be disabled.
66 lines
1.4 KiB
Go
66 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"os"
|
|
"time"
|
|
|
|
"github.com/efekarakus/termcolor"
|
|
"github.com/juanfont/headscale/cmd/headscale/cli"
|
|
"github.com/rs/zerolog"
|
|
"github.com/rs/zerolog/log"
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
func main() {
|
|
var colors bool
|
|
switch l := termcolor.SupportLevel(os.Stderr); l {
|
|
case termcolor.Level16M:
|
|
colors = true
|
|
case termcolor.Level256:
|
|
colors = true
|
|
case termcolor.LevelBasic:
|
|
colors = true
|
|
default:
|
|
// no color, return text as is.
|
|
log.Trace().Msg("Colors are not supported, disabling")
|
|
colors = false
|
|
}
|
|
|
|
// Adhere to no-color.org manifesto of allowing users to
|
|
// turn off color in cli/services
|
|
if _, noColorIsSet := os.LookupEnv("NO_COLOR"); noColorIsSet {
|
|
log.Trace().Msg("NO_COLOR is set, disabling colors")
|
|
colors = false
|
|
}
|
|
|
|
zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
|
|
log.Logger = log.Output(zerolog.ConsoleWriter{
|
|
Out: os.Stdout,
|
|
TimeFormat: time.RFC3339,
|
|
NoColor: !colors,
|
|
})
|
|
|
|
err := cli.LoadConfig("")
|
|
if err != nil {
|
|
log.Fatal().Err(err)
|
|
}
|
|
|
|
logLevel := viper.GetString("log_level")
|
|
switch logLevel {
|
|
case "trace":
|
|
zerolog.SetGlobalLevel(zerolog.TraceLevel)
|
|
case "debug":
|
|
zerolog.SetGlobalLevel(zerolog.DebugLevel)
|
|
case "info":
|
|
zerolog.SetGlobalLevel(zerolog.InfoLevel)
|
|
case "warn":
|
|
zerolog.SetGlobalLevel(zerolog.WarnLevel)
|
|
case "error":
|
|
zerolog.SetGlobalLevel(zerolog.ErrorLevel)
|
|
default:
|
|
zerolog.SetGlobalLevel(zerolog.DebugLevel)
|
|
}
|
|
|
|
cli.Execute()
|
|
}
|