diff --git a/src/cmd/coller/main.go b/src/cmd/coller/main.go index bb820d2..e213740 100644 --- a/src/cmd/coller/main.go +++ b/src/cmd/coller/main.go @@ -61,6 +61,7 @@ func handleMain() int { quiet := flag.Bool("quiet", false, "Log errors only") verbose := flag.Bool("verbose", false, "Print more logs") debug := flag.Bool("debug", false, "Print even more logs") + jsonFormat := flag.Bool("json", false, "Print logs in JSON format") configFile := flag.String("config", filepath.Join(homeDir, ".config", AppName+".json"), "Configuration file") reconfigure := flag.Bool("reconfigure", false, "Re-create configuration file") url := flag.String("url", "", "URL of the coller API") @@ -102,7 +103,13 @@ func handleMain() int { if *quiet { level = slog.LevelError } - logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: level})) + + var logger *slog.Logger + if *jsonFormat { + logger = slog.New(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{Level: level})) + } else { + logger = slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: level})) + } if *url == "" { if _, err = os.Stat(*configFile); errors.Is(err, os.ErrNotExist) || *reconfigure { diff --git a/src/cmd/collerd/main.go b/src/cmd/collerd/main.go index 265fe73..2837dd4 100644 --- a/src/cmd/collerd/main.go +++ b/src/cmd/collerd/main.go @@ -27,6 +27,7 @@ func handleMain() int { quiet := flag.Bool("quiet", false, "Log errors only") verbose := flag.Bool("verbose", false, "Print more logs") debug := flag.Bool("debug", false, "Print even more logs") + jsonFormat := flag.Bool("json", false, "Print logs in JSON format") configFileName := flag.String("config", "", "Configuration file name") flag.Parse() @@ -46,7 +47,13 @@ func handleMain() int { if *quiet { level = slog.LevelError } - logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: level})) + + var logger *slog.Logger + if *jsonFormat { + logger = slog.New(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{Level: level})) + } else { + logger = slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: level})) + } if *configFileName != "" { err = internal.ReadConfig(*configFileName, config) diff --git a/src/cmd/copier/main.go b/src/cmd/copier/main.go index 17dd9e5..8223d33 100644 --- a/src/cmd/copier/main.go +++ b/src/cmd/copier/main.go @@ -41,6 +41,7 @@ func handleMain() int { quiet := flag.Bool("quiet", false, "Log errors only") verbose := flag.Bool("verbose", false, "Print more logs") debug := flag.Bool("debug", false, "Print even more logs") + jsonFormat := flag.Bool("json", false, "Print logs in JSON format") encryptionKey := flag.String("encryption-key", os.Getenv("COLLER_ENCRYPTION_KEY"), "Key to decrypt the note") askEncryptionKey := flag.Bool("ask-encryption-key", false, "Read encryption key from input") fileName := flag.String("file", "", "Write content of the note to a file") @@ -72,7 +73,13 @@ func handleMain() int { if *quiet { level = slog.LevelError } - logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: level})) + + var logger *slog.Logger + if *jsonFormat { + logger = slog.New(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{Level: level})) + } else { + logger = slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: level})) + } if *askEncryptionKey { fmt.Print("Encryption key: ")