Maintenance: new logging, shorter with less deps

This commit is contained in:
Quentin McGaw
2021-02-25 23:51:29 +00:00
parent 1748a2ae12
commit c54ee71e1d
21 changed files with 60 additions and 105 deletions

View File

@@ -15,13 +15,10 @@ import (
)
func (c *cli) OpenvpnConfig(os os.OS) error {
logger, err := logging.NewLogger(logging.ConsoleEncoding, logging.InfoLevel)
if err != nil {
return err
}
logger := logging.New(logging.StdLog)
var allSettings configuration.Settings
err = allSettings.Read(params.NewEnv(), os, logger)
err := allSettings.Read(params.NewEnv(), os, logger)
if err != nil {
return err
}

View File

@@ -35,10 +35,7 @@ func (c *cli) Update(ctx context.Context, args []string, os os.OS) error {
if err := flagSet.Parse(args); err != nil {
return err
}
logger, err := logging.NewLogger(logging.ConsoleEncoding, logging.InfoLevel)
if err != nil {
return err
}
logger := logging.New(logging.StdLog)
if !flushToFile && !options.Stdout {
return fmt.Errorf("at least one of -file or -stdout must be specified")
}

View File

@@ -23,13 +23,13 @@ func (l *looper) collectLines(wg *sync.WaitGroup, stdout, stderr <-chan string)
}
line, level := processLogLine(line)
switch level {
case logging.DebugLevel:
case logging.LevelDebug:
l.logger.Debug(line)
case logging.InfoLevel:
case logging.LevelInfo:
l.logger.Info(line)
case logging.WarnLevel:
case logging.LevelWarn:
l.logger.Warn(line)
case logging.ErrorLevel:
case logging.LevelError:
l.logger.Error(line)
}
}
@@ -43,18 +43,18 @@ func processLogLine(s string) (filtered string, level logging.Level) {
switch {
case strings.HasPrefix(filtered, "notice: "):
filtered = strings.TrimPrefix(filtered, "notice: ")
level = logging.InfoLevel
level = logging.LevelInfo
case strings.HasPrefix(filtered, "info: "):
filtered = strings.TrimPrefix(filtered, "info: ")
level = logging.InfoLevel
level = logging.LevelInfo
case strings.HasPrefix(filtered, "warn: "):
filtered = strings.TrimPrefix(filtered, "warn: ")
level = logging.WarnLevel
level = logging.LevelWarn
case strings.HasPrefix(filtered, "error: "):
filtered = strings.TrimPrefix(filtered, "error: ")
level = logging.ErrorLevel
level = logging.LevelError
default:
level = logging.InfoLevel
level = logging.LevelInfo
}
filtered = constants.ColorUnbound().Sprintf(filtered)
return filtered, level

View File

@@ -14,28 +14,28 @@ func Test_processLogLine(t *testing.T) {
filtered string
level logging.Level
}{
"empty string": {"", "", logging.InfoLevel},
"random string": {"asdasqdb", "asdasqdb", logging.InfoLevel},
"empty string": {"", "", logging.LevelInfo},
"random string": {"asdasqdb", "asdasqdb", logging.LevelInfo},
"unbound notice": {
"[1594595249] unbound[75:0] notice: init module 0: validator",
"init module 0: validator",
logging.InfoLevel},
logging.LevelInfo},
"unbound info": {
"[1594595249] unbound[75:0] info: init module 0: validator",
"init module 0: validator",
logging.InfoLevel},
logging.LevelInfo},
"unbound warn": {
"[1594595249] unbound[75:0] warn: init module 0: validator",
"init module 0: validator",
logging.WarnLevel},
logging.LevelWarn},
"unbound error": {
"[1594595249] unbound[75:0] error: init module 0: validator",
"init module 0: validator",
logging.ErrorLevel},
logging.LevelError},
"unbound unknown": {
"[1594595249] unbound[75:0] BLA: init module 0: validator",
"BLA: init module 0: validator",
logging.InfoLevel},
logging.LevelInfo},
}
for name, tc := range tests {
tc := tc

View File

@@ -55,7 +55,7 @@ func NewLooper(conf unbound.Configurator, settings configuration.DNS, client *ht
},
conf: conf,
client: client,
logger: logger.WithPrefix("dns over tls: "),
logger: logger.NewChild(logging.SetPrefix("dns over tls: ")),
username: username,
puid: puid,
pgid: pgid,

View File

@@ -52,7 +52,7 @@ type configurator struct { //nolint:maligned
func NewConfigurator(logger logging.Logger, routing routing.Routing, openFile os.OpenFileFunc) Configurator {
return &configurator{
commander: command.NewCommander(),
logger: logger.WithPrefix("firewall: "),
logger: logger.NewChild(logging.SetPrefix("firewall: ")),
routing: routing,
openFile: openFile,
allowedInputPorts: make(map[uint16]string),

View File

@@ -23,7 +23,7 @@ type server struct {
}
func NewServer(address string, logger logging.Logger) Server {
healthcheckLogger := logger.WithPrefix("healthcheck: ")
healthcheckLogger := logger.NewChild(logging.SetPrefix("healthcheck: "))
return &server{
address: address,
logger: healthcheckLogger,

View File

@@ -41,7 +41,7 @@ func NewLooper(logger logging.Logger, settings configuration.HTTPProxy) Looper {
status: constants.Stopped,
settings: settings,
},
logger: logger.WithPrefix("http proxy: "),
logger: logger.NewChild(logging.SetPrefix("http proxy: ")),
start: make(chan struct{}),
running: make(chan models.LoopStatus),
stop: make(chan struct{}),

View File

@@ -29,16 +29,16 @@ func (l *looper) collectLines(wg *sync.WaitGroup, stdout, stderr <-chan string)
continue // filtered out
}
if errLine {
level = logging.ErrorLevel
level = logging.LevelError
}
switch level {
case logging.DebugLevel:
case logging.LevelDebug:
l.logger.Debug(line)
case logging.InfoLevel:
case logging.LevelInfo:
l.logger.Info(line)
case logging.WarnLevel:
case logging.LevelWarn:
l.logger.Warn(line)
case logging.ErrorLevel:
case logging.LevelError:
l.logger.Error(line)
}
if strings.Contains(line, "Initialization Sequence Completed") {
@@ -53,21 +53,21 @@ func processLogLine(s string) (filtered string, level logging.Level) {
"NOTE: UID/GID downgrade will be delayed because of --client, --pull, or --up-delay",
} {
if s == ignored {
return "", ""
return "", logging.LevelDebug
}
}
switch {
case strings.HasPrefix(s, "NOTE: "):
filtered = strings.TrimPrefix(s, "NOTE: ")
level = logging.InfoLevel
level = logging.LevelInfo
case strings.HasPrefix(s, "WARNING: "):
filtered = strings.TrimPrefix(s, "WARNING: ")
level = logging.WarnLevel
level = logging.LevelWarn
case strings.HasPrefix(s, "Options error: "):
filtered = strings.TrimPrefix(s, "Options error: ")
level = logging.ErrorLevel
level = logging.LevelError
case s == "Initialization Sequence Completed":
return color.HiGreenString(s), logging.InfoLevel
return color.HiGreenString(s), logging.LevelInfo
case s == "AUTH: Received control message: AUTH_FAILED":
filtered = s + `
@@ -76,7 +76,7 @@ Your credentials might be wrong 🤨
💡 If you use Private Internet Access, check https://github.com/qdm12/gluetun/issues/265
`
level = logging.ErrorLevel
level = logging.LevelError
case strings.Contains(s, "TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)"): //nolint:lll
filtered = s + `
🚒🚒🚒🚒🚒🚨🚨🚨🚨🚨🚨🚒🚒🚒🚒🚒
@@ -93,7 +93,7 @@ That error usually happens because either:
`
default:
filtered = s
level = logging.InfoLevel
level = logging.LevelInfo
}
filtered = constants.ColorOpenvpn().Sprintf(filtered)
return filtered, level

View File

@@ -14,36 +14,36 @@ func Test_processLogLine(t *testing.T) {
filtered string
level logging.Level
}{
"empty string": {"", "", logging.InfoLevel},
"random string": {"asdasqdb", "asdasqdb", logging.InfoLevel},
"empty string": {"", "", logging.LevelInfo},
"random string": {"asdasqdb", "asdasqdb", logging.LevelInfo},
"openvpn unknown": {
"message",
"message",
logging.InfoLevel},
logging.LevelInfo},
"openvpn note": {
"NOTE: message",
"message",
logging.InfoLevel},
logging.LevelInfo},
"openvpn warning": {
"WARNING: message",
"message",
logging.WarnLevel},
logging.LevelWarn},
"openvpn options error": {
"Options error: message",
"message",
logging.ErrorLevel},
logging.LevelError},
"openvpn ignored message": {
"NOTE: UID/GID downgrade will be delayed because of --client, --pull, or --up-delay",
"",
""},
logging.LevelDebug},
"openvpn success": {
"Initialization Sequence Completed",
"Initialization Sequence Completed",
logging.InfoLevel},
logging.LevelInfo},
"openvpn auth failed": {
"AUTH: Received control message: AUTH_FAILED",
"AUTH: Received control message: AUTH_FAILED\n\nYour credentials might be wrong 🤨\n\n💡 If you use Private Internet Access, check https://github.com/qdm12/gluetun/issues/265\n\n", //nolint:lll
logging.ErrorLevel},
logging.LevelError},
}
for name, tc := range tests {
tc := tc

View File

@@ -75,8 +75,8 @@ func NewLooper(settings configuration.OpenVPN,
conf: conf,
fw: fw,
routing: routing,
logger: logger.WithPrefix("openvpn: "),
pfLogger: logger.WithPrefix("port forwarding: "),
logger: logger.NewChild(logging.SetPrefix("openvpn: ")),
pfLogger: logger.NewChild(logging.SetPrefix("port forwarding: ")),
client: client,
openFile: openFile,
tunnelReady: tunnelReady,

View File

@@ -29,7 +29,7 @@ type configurator struct {
func NewConfigurator(logger logging.Logger, os os.OS, unix unix.Unix) Configurator {
return &configurator{
logger: logger.WithPrefix("openvpn configurator: "),
logger: logger.NewChild(logging.SetPrefix("openvpn configurator: ")),
commander: command.NewCommander(),
os: os,
unix: unix,

View File

@@ -60,7 +60,7 @@ func NewLooper(client *http.Client, logger logging.Logger,
// Objects
client: client,
getter: NewIPGetter(client),
logger: logger.WithPrefix("ip getter: "),
logger: logger.NewChild(logging.SetPrefix("ip getter: ")),
os: os,
puid: puid,
pgid: pgid,

View File

@@ -37,7 +37,7 @@ type routing struct {
// NewRouting creates a new routing instance.
func NewRouting(logger logging.Logger) Routing {
return &routing{
logger: logger.WithPrefix("routing: "),
logger: logger.NewChild(logging.SetPrefix("routing: ")),
verbose: true,
}
}

View File

@@ -25,12 +25,12 @@ type server struct {
handler http.Handler
}
func New(address string, logging bool, logger logging.Logger,
func New(address string, logEnabled bool, logger logging.Logger,
buildInfo models.BuildInformation,
openvpnLooper openvpn.Looper, unboundLooper dns.Looper,
updaterLooper updater.Looper, publicIPLooper publicip.Looper) Server {
serverLogger := logger.WithPrefix("http server: ")
handler := newHandler(serverLogger, logging, buildInfo,
serverLogger := logger.NewChild(logging.SetPrefix("http server: "))
handler := newHandler(serverLogger, logEnabled, buildInfo,
openvpnLooper, unboundLooper, updaterLooper, publicIPLooper)
return &server{
address: address,

View File

@@ -58,7 +58,7 @@ func NewLooper(settings configuration.ShadowSocks, logger logging.Logger) Looper
status: constants.Stopped,
settings: settings,
},
logger: logger.WithPrefix("shadowsocks: "),
logger: logger.NewChild(logging.SetPrefix("shadowsocks: ")),
start: make(chan struct{}),
running: make(chan models.LoopStatus),
stop: make(chan struct{}),

View File

@@ -22,7 +22,7 @@ type storage struct {
func New(logger logging.Logger, os os.OS, filepath string) Storage {
return &storage{
os: os,
logger: logger.WithPrefix("storage: "),
logger: logger.NewChild(logging.SetPrefix("storage: ")),
filepath: filepath,
}
}

View File

@@ -47,7 +47,7 @@ const defaultBackoffTime = 5 * time.Second
func NewLooper(settings configuration.Updater, currentServers models.AllServers,
storage storage.Storage, setAllServers func(allServers models.AllServers),
client *http.Client, logger logging.Logger) Looper {
loggerWithPrefix := logger.WithPrefix("updater: ")
loggerWithPrefix := logger.NewChild(logging.SetPrefix("updater: "))
return &looper{
state: state{
status: constants.Stopped,