aks-node-controller/main.go (43 lines of code) (raw):

package main import ( "context" "fmt" "io" "log/slog" "os" "path/filepath" ) func main() { // defer calls are not executed on os.Exit logCleanup := configureLogging() app := App{cmdRunner: cmdRunner} exitCode := app.Run(context.Background(), os.Args) logCleanup() os.Exit(exitCode) } func configureLogging() func() { logPath := setupLogPath() if err := os.MkdirAll(filepath.Dir(logPath), 0755); err != nil { //nolint:forbidigo // there is no other way to communicate the error fmt.Printf("failed to create log directory: %s\n", err) os.Exit(1) } logFile, err := os.OpenFile(logPath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) if err != nil { //nolint:forbidigo // there is no other way to communicate the error fmt.Printf("failed to open log file: %s\n", err) os.Exit(1) } mw := io.MultiWriter(logFile, os.Stderr) logger := slog.New(slog.NewJSONHandler(mw, nil)) slog.SetDefault(logger) return func() { err := logFile.Close() if err != nil { // stdout is important, don't pollute with non-important warnings _, _ = fmt.Fprintf(os.Stderr, "failed to close log file: %s\n", err) } } } func setupLogPath() string { // Try to create production directory first if err := os.MkdirAll(filepath.Dir(logPath), 0755); err == nil { return logPath } // If directory creation fails, fallback to current directory return "aks-node-controller.log" }