From 577d89f4fb84d67a170b678bbe0fd844505686d9 Mon Sep 17 00:00:00 2001 From: Varun Narravula Date: Wed, 31 Dec 2025 15:44:19 -0800 Subject: [PATCH] feat(logger): configure log file path thorugh global options --- olm/olm.go | 15 ++++++++++++--- olm/types.go | 3 ++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/olm/olm.go b/olm/olm.go index 02257b8..98ae6fb 100644 --- a/olm/olm.go +++ b/olm/olm.go @@ -100,6 +100,17 @@ func Init(ctx context.Context, config GlobalConfig) { logger.GetLogger().SetLevel(util.ParseLogLevel(config.LogLevel)) + if config.LogFilePath != "" { + logFile, err := os.OpenFile(config.LogFilePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0o644) + if err != nil { + logger.Fatal("Failed to open log file: %v", err) + } + + // TODO: figure out how to close file, if set + logger.SetOutput(logFile) + return + } + logger.Debug("Checking permissions for native interface") err := permissions.CheckNativeInterfacePermissions() if err != nil { @@ -306,7 +317,7 @@ func StartTunnel(config TunnelConfig) { if config.FileDescriptorTun != 0 { return olmDevice.CreateTUNFromFD(config.FileDescriptorTun, config.MTU) } - var ifName = interfaceName + ifName := interfaceName if runtime.GOOS == "darwin" { // this is if we dont pass a fd ifName, err = network.FindUnusedUTUN() if err != nil { @@ -315,7 +326,6 @@ func StartTunnel(config TunnelConfig) { } return tun.CreateTUN(ifName, config.MTU) }() - if err != nil { logger.Error("Failed to create TUN device: %v", err) return @@ -361,7 +371,6 @@ func StartTunnel(config TunnelConfig) { for { conn, err := uapiListener.Accept() if err != nil { - return } go dev.IpcHandle(conn) diff --git a/olm/types.go b/olm/types.go index b7153af..14cc044 100644 --- a/olm/types.go +++ b/olm/types.go @@ -14,7 +14,8 @@ type WgData struct { type GlobalConfig struct { // Logging - LogLevel string + LogLevel string + LogFilePath string // HTTP server EnableAPI bool