diff options
| author | Bernhard Guillon <Bernhard.Guillon@begu.org> | 2026-07-06 22:16:37 +0200 |
|---|---|---|
| committer | Bernhard Guillon <Bernhard.Guillon@begu.org> | 2026-07-06 22:16:37 +0200 |
| commit | 913a974eca2522ba7c6d27066481bb2c6635db53 (patch) | |
| tree | f0cfc1ee173a762662b586fca5db9db422592093 /main.go | |
| parent | 5f2ba9c3d37a1c8658aea411188a6763e982b1ab (diff) | |
| download | sourcewatch-913a974eca2522ba7c6d27066481bb2c6635db53.tar.gz sourcewatch-913a974eca2522ba7c6d27066481bb2c6635db53.zip | |
Add log level system and sync logging
- log.go: log level system (DEBUG, INFO, WARN, ERROR, NONE)
- CLI: -log-level flag (default info), -verbose as shorthand for debug
- Watcher: logs sync/remove actions at INFO level
- Watcher: logs events at DEBUG level
- Errors: structured error messages (DISK FULL, PERMISSION DENIED, etc.)
- Updated README with -log-level flag
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 28 |
1 files changed, 19 insertions, 9 deletions
@@ -12,37 +12,47 @@ import ( var ( hostDir = flag.String("host", "/host", "Host source directory (read-only)") dataDir = flag.String("data", "/data", "Data destination directory") - verbose = flag.Bool("verbose", false, "Enable verbose logging") + verbose = flag.Bool("verbose", false, "Enable verbose logging (shorthand for -log-level debug)") + logLevel = flag.String("log-level", "info", "Log level: debug, info, warn, error, none") dryRun = flag.Bool("dry-run", false, "Preview what would be synced without copying") ) func main() { flag.Parse() - log.SetFlags(log.LstdFlags | log.Lshortfile) if *verbose { - log.Println("sourcewatch starting...") - log.Printf("host: %s, data: %s, dry-run: %v", *hostDir, *dataDir, *dryRun) + *logLevel = "debug" } + level, err := ParseLogLevel(*logLevel) + if err != nil { + log.Fatal(err) + } + SetLogLevel(level) + + log.SetFlags(0) + log.SetOutput(nil) + stack := NewGitignoreStack(*hostDir) manifest, err := initialSync(*hostDir, *dataDir, stack, *dryRun) if err != nil { - log.Fatalf("initial sync failed: %v", err) + logErrorf("initial sync failed: %v", err) + os.Exit(1) } if *dryRun { - log.Println("dry-run complete, exiting") + logInfo("dry-run complete, exiting") return } - log.Println("watcher: ready, monitoring for changes ...") + logInfo("watcher: ready, monitoring for changes ...") ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM) defer cancel() - if err := watch(ctx, *hostDir, *dataDir, manifest, stack, *dryRun, *verbose); err != nil { - log.Fatalf("watcher failed: %v", err) + if err := watch(ctx, *hostDir, *dataDir, manifest, stack, *dryRun); err != nil { + logErrorf("watcher failed: %v", err) + os.Exit(1) } } |
