Skip to content

Commit

Permalink
all: partial revert slog logger usage
Browse files Browse the repository at this point in the history
  • Loading branch information
Mizzick committed Jul 5, 2024
1 parent f16cddb commit cdf9ccd
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 84 deletions.
6 changes: 2 additions & 4 deletions internal/aghos/syslog.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package aghos

import "io"

// ConfigureSyslog returns an output rerouted to syslog.
func ConfigureSyslog(serviceName string) (w io.Writer, err error) {
// ConfigureSyslog reroutes standard logger output to syslog.
func ConfigureSyslog(serviceName string) error {
return configureSyslog(serviceName)
}
13 changes: 7 additions & 6 deletions internal/aghos/syslog_others.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,16 @@
package aghos

import (
"io"
"log/syslog"

"github.com/AdguardTeam/golibs/log"
)

func configureSyslog(serviceName string) (w io.Writer, err error) {
w, err = syslog.New(syslog.LOG_NOTICE|syslog.LOG_USER, serviceName)
func configureSyslog(serviceName string) error {
w, err := syslog.New(syslog.LOG_NOTICE|syslog.LOG_USER, serviceName)
if err != nil {
return nil, err
return err
}

return w, nil
log.SetOutput(w)
return nil
}
23 changes: 10 additions & 13 deletions internal/aghos/syslog_windows.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
package aghos

import (
"io"
"strings"

"github.com/AdguardTeam/golibs/log"
"golang.org/x/sys/windows"
"golang.org/x/sys/windows/svc/eventlog"
)
Expand All @@ -19,26 +19,23 @@ func (w *eventLogWriter) Write(b []byte) (int, error) {
return len(b), w.el.Info(1, string(b))
}

func configureSyslog(serviceName string) (w io.Writer, err error) {
// Note that the eventlog src is the same as the service name. Otherwise,
// we will get "the description for event id cannot be found" warning in
// every log record.
func configureSyslog(serviceName string) error {
// Note that the eventlog src is the same as the service name
// Otherwise, we will get "the description for event id cannot be found" warning in every log record

// Continue if we receive "registry key already exists" or if we get
// ERROR_ACCESS_DENIED so that we can log without administrative permissions
// for pre-existing eventlog sources.
err = eventlog.InstallAsEventCreate(serviceName, eventlog.Info|eventlog.Warning|eventlog.Error)
if err != nil {
if !strings.Contains(err.Error(), "registry key already exists") &&
err != windows.ERROR_ACCESS_DENIED {
return nil, err
if err := eventlog.InstallAsEventCreate(serviceName, eventlog.Info|eventlog.Warning|eventlog.Error); err != nil {
if !strings.Contains(err.Error(), "registry key already exists") && err != windows.ERROR_ACCESS_DENIED {
return err
}
}

el, err := eventlog.Open(serviceName)
if err != nil {
return nil, err
return err
}

return &eventLogWriter{el: el}, nil
log.SetOutput(&eventLogWriter{el: el})
return nil
}
18 changes: 8 additions & 10 deletions internal/home/home.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ import (
"github.com/AdguardTeam/golibs/errors"
"github.com/AdguardTeam/golibs/hostsfile"
"github.com/AdguardTeam/golibs/log"
"github.com/AdguardTeam/golibs/logutil/slogutil"
"github.com/AdguardTeam/golibs/netutil"
"github.com/AdguardTeam/golibs/osutil"
)
Expand Down Expand Up @@ -559,15 +558,14 @@ func run(opts options, clientBuildFS fs.FS, done chan struct{}) {
err = configureLogger(ls)
fatalOnError(err)

// Configure slog logger.
l, err := initLogger(ls)
fatalOnError(err)
// TODO(a.garipov): Use slog everywhere.
l := initLogger(ls)

// Print the first message after logger is configured.
l.Info(version.Full())
l.Debug("current working directory is set", "work_dir", Context.workDir)
log.Info(version.Full())
log.Debug("current working directory is %s", Context.workDir)
if opts.runningAsService {
l.Info("AdGuard Home is running as a service")
log.Info("AdGuard Home is running as a service")
}

err = setupContext(opts, l)
Expand Down Expand Up @@ -598,7 +596,7 @@ func run(opts options, clientBuildFS fs.FS, done chan struct{}) {
}

confPath := configFilePath()
l.Debug("using config path for updater", "path", confPath)
log.Debug("using config path %q for updater", confPath)

upd := updater.NewUpdater(&updater.Config{
Client: config.Filtering.HTTPClient,
Expand Down Expand Up @@ -640,7 +638,7 @@ func run(opts options, clientBuildFS fs.FS, done chan struct{}) {

Context.tls, err = newTLSManager(config.TLS, config.DNS.ServePlainDNS)
if err != nil {
l.Error("initializing tls", slogutil.KeyError, err)
log.Error("initializing tls: %s", err)
onConfigModified()
}

Expand All @@ -664,7 +662,7 @@ func run(opts options, clientBuildFS fs.FS, done chan struct{}) {
if Context.dhcpServer != nil {
err = Context.dhcpServer.Start()
if err != nil {
l.Error("starting dhcp server", slogutil.KeyError, err)
log.Error("starting dhcp server: %s", err)
}
}
}
Expand Down
51 changes: 5 additions & 46 deletions internal/home/log.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package home
import (
"cmp"
"fmt"
"io"
"log/slog"
"path/filepath"
"runtime"
Expand All @@ -20,53 +19,16 @@ import (
const configSyslog = "syslog"

// initLogger returns new [*slog.Logger] configured with the given settings.
func initLogger(ls *logSettings) (l *slog.Logger, err error) {
func initLogger(ls *logSettings) (l *slog.Logger) {
if !ls.Enabled {
return slogutil.NewDiscardLogger(), nil
}

w, err := logOutput(ls)
if err != nil {
return nil, fmt.Errorf("cannot initialize log output: %w", err)
return slogutil.NewDiscardLogger()
}

return slogutil.New(&slogutil.Config{
Output: w,
Format: slogutil.FormatDefault,
Format: slogutil.FormatAdGuardLegacy,
AddTimestamp: true,
Verbose: ls.Verbose,
}), nil
}

// logOutput returns a log output [io.Writer] configured with the settings.
func logOutput(ls *logSettings) (w io.Writer, err error) {
if ls.File == "" {
return nil, nil
}

if ls.File == configSyslog {
// Use syslog where it is possible and eventlog on Windows.
w, err = aghos.ConfigureSyslog(serviceName)
if err != nil {
return nil, fmt.Errorf("cannot initialize syslog: %w", err)
}

return w, nil
}

logFilePath := ls.File
if !filepath.IsAbs(logFilePath) {
logFilePath = filepath.Join(Context.workDir, logFilePath)
}

return &lumberjack.Logger{
Filename: logFilePath,
Compress: ls.Compress,
LocalTime: ls.LocalTime,
MaxBackups: ls.MaxBackups,
MaxSize: ls.MaxSize,
MaxAge: ls.MaxAge,
}, nil
})
}

// configureLogger configures logger level and output.
Expand All @@ -89,14 +51,11 @@ func configureLogger(ls *logSettings) (err error) {

if ls.File == configSyslog {
// Use syslog where it is possible and eventlog on Windows.
var w io.Writer
w, err = aghos.ConfigureSyslog(serviceName)
err = aghos.ConfigureSyslog(serviceName)
if err != nil {
return fmt.Errorf("cannot initialize syslog: %w", err)
}

log.SetOutput(w)

return nil
}

Expand Down
6 changes: 1 addition & 5 deletions internal/next/cmd/log.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package cmd

import (
"fmt"
"io"
"os"

"github.com/AdguardTeam/AdGuardHome/internal/aghos"
Expand All @@ -23,13 +22,10 @@ func setLog(opts *options) (err error) {
case "stderr":
log.SetOutput(os.Stderr)
case "syslog":
var w io.Writer
w, err = aghos.ConfigureSyslog(syslogServiceName)
err = aghos.ConfigureSyslog(syslogServiceName)
if err != nil {
return fmt.Errorf("initializing syslog: %w", err)
}

log.SetOutput(w)
default:
// TODO(a.garipov): Use the path.
}
Expand Down

0 comments on commit cdf9ccd

Please sign in to comment.