The following pull request was submitted through Github.
It can be accessed and reviewed at: https://github.com/lxc/lxd/pull/4857

This e-mail was sent by the LXC bot, direct replies will not reach the author
unless they happen to be subscribed to this list.

=== Description (from pull-request) ===
This branch configures dqlite to use lxd's logger instead of its default one (from the stdlib)
From 9af246f94588075772ef8f8cb53be17e34a1659c Mon Sep 17 00:00:00 2001
From: Free Ekanayaka <free.ekanay...@canonical.com>
Date: Wed, 1 Aug 2018 12:42:33 +0000
Subject: [PATCH 1/2] Redirect dqlite logging to lxd logging

Signed-off-by: Free Ekanayaka <free.ekanay...@canonical.com>
---
 lxd/cluster/gateway.go | 41 +++++++++++++++--------------------------
 lxd/daemon.go          |  1 +
 2 files changed, 16 insertions(+), 26 deletions(-)

diff --git a/lxd/cluster/gateway.go b/lxd/cluster/gateway.go
index f6e3c6c006..1e93f3ba4a 100644
--- a/lxd/cluster/gateway.go
+++ b/lxd/cluster/gateway.go
@@ -471,7 +471,9 @@ func (g *Gateway) init() error {
                provider := &raftAddressProvider{db: g.db}
                server, err := dqlite.NewServer(
                        raft.Raft(), raft.Registry(), listener,
-                       dqlite.WithServerAddressProvider(provider))
+                       dqlite.WithServerAddressProvider(provider),
+                       dqlite.WithServerLogFunc(DqliteLog),
+               )
                if err != nil {
                        return errors.Wrap(err, "Failed to create dqlite 
server")
                }
@@ -640,31 +642,18 @@ func dqliteMemoryDial(listener net.Listener) 
dqlite.DialFunc {
 // performing SQL queries against the dqlite server running on this node.
 const databaseEndpoint = "/internal/database"
 
-// Redirect dqlite's logs to our own logger
-func dqliteLog(configuredLevel string) func(level, message string) {
-       return func(level, message string) {
-               if level == "TRACE" {
-                       // TODO: lxd has no TRACE level, so let's map it to
-                       // DEBUG. However, ignore it altogether if the
-                       // configured level is not TRACE, to save some CPU
-                       // (since TRACE is quite verbose in dqlite).
-                       if configuredLevel != "TRACE" {
-                               return
-                       }
-                       level = "DEBUG"
-               }
-
-               message = fmt.Sprintf("DQLite: %s", message)
-               switch level {
-               case "DEBUG":
-                       logger.Debug(message)
-               case "INFO":
-                       logger.Info(message)
-               case "WARN":
-                       logger.Warn(message)
-               default:
-                       // Ignore any other log level.
-               }
+// DqliteLog redirects dqlite's logs to our own logger
+func DqliteLog(l dqlite.LogLevel, format string, a ...interface{}) {
+       format = fmt.Sprintf("Dqlite: %s", format)
+       switch l {
+       case dqlite.LogDebug:
+               logger.Debugf(format, a...)
+       case dqlite.LogInfo:
+               logger.Infof(format, a...)
+       case dqlite.LogWarn:
+               logger.Warnf(format, a...)
+       case dqlite.LogError:
+               logger.Errorf(format, a...)
        }
 }
 
diff --git a/lxd/daemon.go b/lxd/daemon.go
index 451cc28f8f..9eb6479216 100644
--- a/lxd/daemon.go
+++ b/lxd/daemon.go
@@ -478,6 +478,7 @@ func (d *Daemon) init() error {
                        dqlite.WithDialFunc(d.gateway.DialFunc()),
                        dqlite.WithContext(d.gateway.Context()),
                        
dqlite.WithConnectionTimeout(d.config.DqliteSetupTimeout),
+                       dqlite.WithLogFunc(cluster.DqliteLog),
                )
                if err == nil {
                        break

From 0e44162ba1d29a86e7d4aff6da8acecd45d05352 Mon Sep 17 00:00:00 2001
From: Free Ekanayaka <free.ekanay...@canonical.com>
Date: Wed, 1 Aug 2018 12:52:43 +0000
Subject: [PATCH 2/2] Fix unit test regression

Signed-off-by: Free Ekanayaka <free.ekanay...@canonical.com>
---
 lxd/cluster/gateway_test.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lxd/cluster/gateway_test.go b/lxd/cluster/gateway_test.go
index 48fa86c4b5..076d2ad160 100644
--- a/lxd/cluster/gateway_test.go
+++ b/lxd/cluster/gateway_test.go
@@ -52,7 +52,7 @@ func TestGateway_Single(t *testing.T) {
 
        leader, err := gateway.LeaderAddress()
        assert.Equal(t, "", leader)
-       assert.EqualError(t, err, "node is not clustered")
+       assert.EqualError(t, err, "Node is not clustered")
 }
 
 // If there's a network address configured, we expose the gRPC endpoint with
_______________________________________________
lxc-devel mailing list
lxc-devel@lists.linuxcontainers.org
http://lists.linuxcontainers.org/listinfo/lxc-devel

Reply via email to