From 5d3620df93846a5e912213be86d231a62e3acc06 Mon Sep 17 00:00:00 2001 From: kruskal <99559985+kruskall@users.noreply.github.com> Date: Wed, 6 Aug 2025 02:31:48 +0200 Subject: [PATCH 1/6] feat: replace global logging func with local logger drop remaining usage of global logging funcs --- filewatcher/filewatcher.go | 6 ++++-- service/service.go | 2 +- service/service_unix.go | 4 +++- service/service_windows.go | 10 +++++----- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/filewatcher/filewatcher.go b/filewatcher/filewatcher.go index 6904b9c..ba46e1b 100644 --- a/filewatcher/filewatcher.go +++ b/filewatcher/filewatcher.go @@ -27,13 +27,15 @@ import ( ) type FileWatcher struct { + logger *logp.Logger files []string lastScan time.Time lastHash uint64 } -func New(files ...string) *FileWatcher { +func New(logger *logp.Logger, files ...string) *FileWatcher { return &FileWatcher{ + logger: logger, lastScan: time.Time{}, lastHash: 0, files: files, @@ -57,7 +59,7 @@ func (f *FileWatcher) Scan() ([]string, bool, error) { for _, path := range f.files { info, err := os.Stat(path) if err != nil { - logp.Err("Error getting stats for file: %s", path) + f.logger.Error("Error getting stats for file: %s", path) continue } diff --git a/service/service.go b/service/service.go index 538f3fd..b278de1 100644 --- a/service/service.go +++ b/service/service.go @@ -55,7 +55,7 @@ func HandleSignals(stopFunction func(), cancel context.CancelFunc) { }() // Handle the Windows service events - go ProcessWindowsControlEvents(func() { + go ProcessWindowsControlEvents(logger, func() { logger.Info("Received Windows SVC stop/shutdown request") callback.Do(stopFunction) }) diff --git a/service/service_unix.go b/service/service_unix.go index 38784f0..dab85a0 100644 --- a/service/service_unix.go +++ b/service/service_unix.go @@ -19,8 +19,10 @@ package service +import "github.com/elastic/elastic-agent-libs/logp" + // ProcessWindowsControlEvents is not used on non-windows platforms. -func ProcessWindowsControlEvents(stopCallback func()) { +func ProcessWindowsControlEvents(logger *logp.Logger, stopCallback func()) { } func notifyWindowsServiceStopped() { diff --git a/service/service_windows.go b/service/service_windows.go index 77f385e..1232fdc 100644 --- a/service/service_windows.go +++ b/service/service_windows.go @@ -122,16 +122,16 @@ const couldNotConnect syscall.Errno = 1063 // On non-windows platforms, the function does nothing. The // stopCallback function is called when the Stop/Shutdown // request is received. -func ProcessWindowsControlEvents(stopCallback func()) { +func ProcessWindowsControlEvents(logger *logp.Logger, stopCallback func()) { defer close(serviceInstance.executeFinished) //nolint:staticcheck // keep using the deprecated method in order to maintain the existing behavior isInteractive, err := svc.IsAnInteractiveSession() if err != nil { - logp.Err("IsAnInteractiveSession: %v", err) + logger.Error("IsAnInteractiveSession: %v", err) return } - logp.Debug("service", "Windows is interactive: %v", isInteractive) + logger.Debug("service", "Windows is interactive: %v", isInteractive) run := svc.Run if isInteractive { @@ -160,11 +160,11 @@ func ProcessWindowsControlEvents(stopCallback func()) { If the program will be run as a console application for debugging purposes, structure it such that service-specific code is not called when this error is returned." */ - logp.Info("Attempted to register Windows service handlers, but this is not a service. No action necessary") + logger.Info("Attempted to register Windows service handlers, but this is not a service. No action necessary") return } - logp.Err("Windows service setup failed: %+v", err) + logger.Error("Windows service setup failed: %+v", err) } // WaitExecutionDone returns only after stop was reported to service manager. From 39412089bb212a63fc731d523faf80af7c32da90 Mon Sep 17 00:00:00 2001 From: kruskal <99559985+kruskall@users.noreply.github.com> Date: Wed, 6 Aug 2025 02:39:47 +0200 Subject: [PATCH 2/6] lint: update methods --- filewatcher/filewatcher_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/filewatcher/filewatcher_test.go b/filewatcher/filewatcher_test.go index e657dfe..6506a2a 100644 --- a/filewatcher/filewatcher_test.go +++ b/filewatcher/filewatcher_test.go @@ -23,6 +23,7 @@ import ( "testing" "time" + "github.com/elastic/elastic-agent-libs/logp/logptest" "github.com/stretchr/testify/assert" ) @@ -44,7 +45,7 @@ func TestFileWatcher(t *testing.T) { filenames = append(filenames, filename) } - watcher := New(filenames...) + watcher := New(logptest.NewTestingLogger(t, ""), filenames...) // Modification timestamps usually have second precision, // we wait to make sure we're not in the second the files were created From 3c19307c8e1c5e691155a86641769989a3b6a20e Mon Sep 17 00:00:00 2001 From: kruskall <99559985+kruskall@users.noreply.github.com> Date: Wed, 6 Aug 2025 14:12:21 +0200 Subject: [PATCH 3/6] Update filewatcher.go --- filewatcher/filewatcher.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/filewatcher/filewatcher.go b/filewatcher/filewatcher.go index ba46e1b..82d24cf 100644 --- a/filewatcher/filewatcher.go +++ b/filewatcher/filewatcher.go @@ -59,7 +59,7 @@ func (f *FileWatcher) Scan() ([]string, bool, error) { for _, path := range f.files { info, err := os.Stat(path) if err != nil { - f.logger.Error("Error getting stats for file: %s", path) + f.logger.Errorf("Error getting stats for file: %s", path) continue } From 99e5464751a55815568ae369bfac91611295a0e3 Mon Sep 17 00:00:00 2001 From: kruskall <99559985+kruskall@users.noreply.github.com> Date: Wed, 6 Aug 2025 14:13:06 +0200 Subject: [PATCH 4/6] Update service_windows.go --- service/service_windows.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/service/service_windows.go b/service/service_windows.go index 1232fdc..487269c 100644 --- a/service/service_windows.go +++ b/service/service_windows.go @@ -131,7 +131,7 @@ func ProcessWindowsControlEvents(logger *logp.Logger, stopCallback func()) { logger.Error("IsAnInteractiveSession: %v", err) return } - logger.Debug("service", "Windows is interactive: %v", isInteractive) + logger.Debugf("service", "Windows is interactive: %v", isInteractive) run := svc.Run if isInteractive { @@ -164,7 +164,7 @@ func ProcessWindowsControlEvents(logger *logp.Logger, stopCallback func()) { return } - logger.Error("Windows service setup failed: %+v", err) + logger.Errorf("Windows service setup failed: %+v", err) } // WaitExecutionDone returns only after stop was reported to service manager. From 98b2dbb1ae6c837946a793718ab31a44d413c832 Mon Sep 17 00:00:00 2001 From: kruskall <99559985+kruskall@users.noreply.github.com> Date: Wed, 6 Aug 2025 14:13:38 +0200 Subject: [PATCH 5/6] Update service_windows.go --- service/service_windows.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/service/service_windows.go b/service/service_windows.go index 487269c..44cea2e 100644 --- a/service/service_windows.go +++ b/service/service_windows.go @@ -128,7 +128,7 @@ func ProcessWindowsControlEvents(logger *logp.Logger, stopCallback func()) { //nolint:staticcheck // keep using the deprecated method in order to maintain the existing behavior isInteractive, err := svc.IsAnInteractiveSession() if err != nil { - logger.Error("IsAnInteractiveSession: %v", err) + logger.Errorf("IsAnInteractiveSession: %v", err) return } logger.Debugf("service", "Windows is interactive: %v", isInteractive) From 67cf1a1089bf19c6b9884fbcfbf488f1ecefbebb Mon Sep 17 00:00:00 2001 From: kruskall <99559985+kruskall@users.noreply.github.com> Date: Wed, 6 Aug 2025 16:01:48 +0200 Subject: [PATCH 6/6] Update service/service_windows.go Co-authored-by: Khushi Jain --- service/service_windows.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/service/service_windows.go b/service/service_windows.go index 44cea2e..ff9a6b7 100644 --- a/service/service_windows.go +++ b/service/service_windows.go @@ -131,7 +131,7 @@ func ProcessWindowsControlEvents(logger *logp.Logger, stopCallback func()) { logger.Errorf("IsAnInteractiveSession: %v", err) return } - logger.Debugf("service", "Windows is interactive: %v", isInteractive) + logger.Named("service")..Debugf("Windows is interactive: %v", isInteractive) run := svc.Run if isInteractive {