core: replace zap with logtree

Test Plan: Effective refactor. Only tests that could be affected are e2e tests that should continue to run, because we still are logging into the qemu console, even if differently.

X-Origin-Diff: phab/D642
GitOrigin-RevId: 0f12b1bc985af08a3cc269569273184321763e4b
diff --git a/core/internal/network/BUILD.bazel b/core/internal/network/BUILD.bazel
index b2b486f..af82b8b 100644
--- a/core/internal/network/BUILD.bazel
+++ b/core/internal/network/BUILD.bazel
@@ -9,10 +9,10 @@
         "//core/internal/common/supervisor:go_default_library",
         "//core/internal/network/dhcp:go_default_library",
         "//core/internal/network/dns:go_default_library",
+        "//core/pkg/logtree:go_default_library",
         "@com_github_google_nftables//:go_default_library",
         "@com_github_google_nftables//expr:go_default_library",
         "@com_github_vishvananda_netlink//:go_default_library",
         "@org_golang_x_sys//unix:go_default_library",
-        "@org_uber_go_zap//:go_default_library",
     ],
 )
diff --git a/core/internal/network/dhcp/BUILD.bazel b/core/internal/network/dhcp/BUILD.bazel
index 40ac372..8962e28 100644
--- a/core/internal/network/dhcp/BUILD.bazel
+++ b/core/internal/network/dhcp/BUILD.bazel
@@ -10,6 +10,5 @@
         "@com_github_insomniacslk_dhcp//dhcpv4:go_default_library",
         "@com_github_insomniacslk_dhcp//dhcpv4/nclient4:go_default_library",
         "@com_github_vishvananda_netlink//:go_default_library",
-        "@org_uber_go_zap//:go_default_library",
     ],
 )
diff --git a/core/internal/network/dhcp/dhcp.go b/core/internal/network/dhcp/dhcp.go
index 0eef2cc..b2c0446 100644
--- a/core/internal/network/dhcp/dhcp.go
+++ b/core/internal/network/dhcp/dhcp.go
@@ -26,7 +26,6 @@
 	"github.com/insomniacslk/dhcp/dhcpv4"
 	"github.com/insomniacslk/dhcp/dhcpv4/nclient4"
 	"github.com/vishvananda/netlink"
-	"go.uber.org/zap"
 )
 
 type Client struct {
@@ -88,7 +87,7 @@
 			_, ack, err := client.Request(ctx)
 			if err != nil {
 				// TODO(q3k): implement retry logic with full state machine
-				logger.Error("DHCP lease request failed", zap.Error(err))
+				logger.Errorf("DHCP lease request failed: %v", err)
 				return err
 			}
 			newC <- parseAck(ack)
@@ -116,7 +115,7 @@
 
 			case cfg := <-newC:
 				current = cfg
-				logger.Info("DHCP client ASSIGNED", zap.String("ip", current.String()))
+				logger.Info("DHCP client ASSIGNED IP %s", current.String())
 				for _, w := range waiters {
 					w.fulfill(current)
 				}
diff --git a/core/internal/network/dns/BUILD.bazel b/core/internal/network/dns/BUILD.bazel
index d197191..efc2727 100644
--- a/core/internal/network/dns/BUILD.bazel
+++ b/core/internal/network/dns/BUILD.bazel
@@ -12,6 +12,5 @@
         "//core/internal/common/supervisor:go_default_library",
         "//core/pkg/fileargs:go_default_library",
         "//core/pkg/logbuffer:go_default_library",
-        "@org_uber_go_zap//:go_default_library",
     ],
 )
diff --git a/core/internal/network/dns/coredns.go b/core/internal/network/dns/coredns.go
index 8c70c4f..037c7c1 100644
--- a/core/internal/network/dns/coredns.go
+++ b/core/internal/network/dns/coredns.go
@@ -26,8 +26,6 @@
 	"sync"
 	"syscall"
 
-	"go.uber.org/zap"
-
 	"git.monogon.dev/source/nexantic.git/core/internal/common/supervisor"
 	"git.monogon.dev/source/nexantic.git/core/pkg/fileargs"
 	"git.monogon.dev/source/nexantic.git/core/pkg/logbuffer"
@@ -165,7 +163,7 @@
 	if s.cmd != nil && s.cmd.Process != nil && s.cmd.ProcessState == nil {
 		s.args.ArgPath("Corefile", s.makeCorefile(s.args))
 		if err := s.cmd.Process.Signal(syscall.SIGUSR1); err != nil {
-			supervisor.Logger(ctx).Warn("Failed to send SIGUSR1 to CoreDNS for reload", zap.Error(err))
+			supervisor.Logger(ctx).Warningf("Failed to send SIGUSR1 to CoreDNS for reload: %v", err)
 		}
 	}
 }
diff --git a/core/internal/network/main.go b/core/internal/network/main.go
index 31c0b68..414d971 100644
--- a/core/internal/network/main.go
+++ b/core/internal/network/main.go
@@ -27,12 +27,12 @@
 	"github.com/google/nftables/expr"
 
 	"github.com/vishvananda/netlink"
-	"go.uber.org/zap"
 	"golang.org/x/sys/unix"
 
 	"git.monogon.dev/source/nexantic.git/core/internal/common/supervisor"
 	"git.monogon.dev/source/nexantic.git/core/internal/network/dhcp"
 	"git.monogon.dev/source/nexantic.git/core/internal/network/dns"
+	"git.monogon.dev/source/nexantic.git/core/pkg/logtree"
 )
 
 const (
@@ -44,7 +44,7 @@
 	config Config
 	dhcp   *dhcp.Client
 
-	logger *zap.Logger
+	logger logtree.LeveledLogger
 }
 
 type Config struct {
@@ -87,7 +87,7 @@
 	}
 
 	if gw.IsUnspecified() {
-		s.logger.Info("No default route set, only local network will be reachable", zap.String("local", addr.String()))
+		s.logger.Infof("No default route set, only local network %s will be reachable", addr.String())
 		return nil
 	}
 
@@ -123,7 +123,7 @@
 	s.config.CorednsRegistrationChan <- dns.NewUpstreamDirective(status.DNS)
 
 	if err := s.addNetworkRoutes(iface, status.Address, status.Gateway); err != nil {
-		s.logger.Warn("failed to add routes", zap.Error(err))
+		s.logger.Warning("Failed to add routes: %v", err)
 	}
 
 	c := nftables.Conn{}
@@ -179,12 +179,12 @@
 	supervisor.Run(ctx, "interfaces", s.runInterfaces)
 
 	if err := ioutil.WriteFile("/proc/sys/net/ipv4/ip_forward", []byte("1\n"), 0644); err != nil {
-		logger.Panic("Failed to enable IPv4 forwarding", zap.Error(err))
+		logger.Fatalf("Failed to enable IPv4 forwarding: %v", err)
 	}
 
 	// We're handling all DNS requests with CoreDNS, including local ones
 	if err := setResolvconf([]net.IP{{127, 0, 0, 1}}, []string{}); err != nil {
-		logger.Warn("failed to set resolvconf", zap.Error(err))
+		logger.Fatalf("Failed to set resolv.conf: %v", err)
 	}
 
 	supervisor.Signal(ctx, supervisor.SignalHealthy)
@@ -198,7 +198,7 @@
 
 	links, err := netlink.LinkList()
 	if err != nil {
-		s.logger.Fatal("Failed to list network links", zap.Error(err))
+		s.logger.Fatalf("Failed to list network links: %s", err)
 	}
 
 	var ethernetLinks []netlink.Link
@@ -211,16 +211,16 @@
 				}
 				ethernetLinks = append(ethernetLinks, link)
 			} else {
-				s.logger.Info("Ignoring non-Ethernet interface", zap.String("interface", attrs.Name))
+				s.logger.Infof("Ignoring non-Ethernet interface %s", attrs.Name)
 			}
 		} else if link.Attrs().Name == "lo" {
 			if err := netlink.LinkSetUp(link); err != nil {
-				s.logger.Error("Failed to take up loopback interface", zap.Error(err))
+				s.logger.Errorf("Failed to bring up loopback interface: %v", err)
 			}
 		}
 	}
 	if len(ethernetLinks) != 1 {
-		s.logger.Warn("Network service needs exactly one link, bailing")
+		s.logger.Warningf("Network service needs exactly one link, bailing")
 	} else {
 		link := ethernetLinks[0]
 		if err := s.useInterface(ctx, link); err != nil {