TUN-3471: Add structured log context to logs

This commit is contained in:
Areg Harutyunyan
2020-12-28 18:10:01 +00:00
committed by Arég Harutyunyan
parent abab78730d
commit 55bf904689
40 changed files with 344 additions and 214 deletions

View File

@@ -49,12 +49,12 @@ func (u *UpstreamHTTPS) Exchange(ctx context.Context, query *dns.Msg) (*dns.Msg,
for _, bootstrap := range u.bootstraps {
endpoint, client, err := configureBootstrap(bootstrap)
if err != nil {
u.log.Error().Msgf("failed to configure boostrap upstream %s: %s", bootstrap, err)
u.log.Err(err).Msgf("failed to configure boostrap upstream %s", bootstrap)
continue
}
msg, err := exchange(queryBuf, query.Id, endpoint, client, u.log)
if err != nil {
u.log.Error().Msgf("failed to connect to a boostrap upstream %s: %s", bootstrap, err)
u.log.Err(err).Msgf("failed to connect to a boostrap upstream %s", bootstrap)
continue
}
return msg, nil
@@ -78,7 +78,7 @@ func exchange(msg []byte, queryID uint16, endpoint *url.URL, client *http.Client
return response, nil
}
log.Error().Msgf("failed to connect to an HTTPS backend %q: %s", endpoint, backendErr)
log.Err(backendErr).Msgf("failed to connect to an HTTPS backend %q", endpoint)
return nil, backendErr
}

View File

@@ -20,6 +20,11 @@ import (
"github.com/urfave/cli/v2"
)
const (
LogFieldAddress = "address"
LogFieldURL = "url"
)
// Listener is an adapter between CoreDNS server and Warp runnable
type Listener struct {
server *dnsserver.Server
@@ -75,14 +80,20 @@ func Run(c *cli.Context) error {
metricsListener, err := net.Listen("tcp", c.String("metrics"))
if err != nil {
log.Fatal().Msgf("Failed to open the metrics listener: %s", err)
log.Fatal().Err(err).Msg("Failed to open the metrics listener")
}
go metrics.ServeMetrics(metricsListener, nil, nil, log)
listener, err := CreateListener(c.String("address"), uint16(c.Uint("port")), c.StringSlice("upstream"), c.StringSlice("bootstrap"), log)
listener, err := CreateListener(
c.String("address"),
uint16(c.Uint("port")),
c.StringSlice("upstream"),
c.StringSlice("bootstrap"),
log,
)
if err != nil {
log.Error().Msgf("Failed to create the listeners: %s", err)
log.Err(err).Msg("Failed to create the listeners")
return err
}
@@ -90,7 +101,7 @@ func Run(c *cli.Context) error {
readySignal := make(chan struct{})
err = listener.Start(readySignal)
if err != nil {
log.Error().Msgf("Failed to start the listeners: %s", err)
log.Err(err).Msg("Failed to start the listeners")
return listener.Stop()
}
<-readySignal
@@ -104,7 +115,7 @@ func Run(c *cli.Context) error {
// Shut down server
err = listener.Stop()
if err != nil {
log.Error().Msgf("failed to stop: %s", err)
log.Err(err).Msg("failed to stop")
}
return err
}
@@ -125,7 +136,7 @@ func createConfig(address string, port uint16, p plugin.Handler) *dnsserver.Conf
// Start blocks for serving requests
func (l *Listener) Start(readySignal chan struct{}) error {
defer close(readySignal)
l.log.Info().Msgf("Starting DNS over HTTPS proxy server on: %s", l.server.Address())
l.log.Info().Str(LogFieldAddress, l.server.Address()).Msg("Starting DNS over HTTPS proxy server")
// Start UDP listener
if udp, err := l.server.ListenPacket(); err == nil {
@@ -166,7 +177,7 @@ func CreateListener(address string, port uint16, upstreams []string, bootstraps
// Build the list of upstreams
upstreamList := make([]Upstream, 0)
for _, url := range upstreams {
log.Info().Msgf("Adding DNS upstream - url: %s", url)
log.Info().Str(LogFieldURL, url).Msg("Adding DNS upstream")
upstream, err := NewUpstreamHTTPS(url, bootstraps, log)
if err != nil {
return nil, errors.Wrap(err, "failed to create HTTPS upstream")