feat: Add JSON logging format
All checks were successful
/ pre-commit (push) Successful in 1m17s

Fixes #40.

Signed-off-by: Julien Riou <julien@riou.xyz>
This commit is contained in:
Julien Riou 2025-10-02 07:35:48 +02:00
commit 2d8d7efbcb
Signed by: jriou
GPG key ID: 9A099EDA51316854
3 changed files with 24 additions and 3 deletions

View file

@ -61,6 +61,7 @@ func handleMain() int {
quiet := flag.Bool("quiet", false, "Log errors only") quiet := flag.Bool("quiet", false, "Log errors only")
verbose := flag.Bool("verbose", false, "Print more logs") verbose := flag.Bool("verbose", false, "Print more logs")
debug := flag.Bool("debug", false, "Print even 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") configFile := flag.String("config", filepath.Join(homeDir, ".config", AppName+".json"), "Configuration file")
reconfigure := flag.Bool("reconfigure", false, "Re-create configuration file") reconfigure := flag.Bool("reconfigure", false, "Re-create configuration file")
url := flag.String("url", "", "URL of the coller API") url := flag.String("url", "", "URL of the coller API")
@ -102,7 +103,13 @@ func handleMain() int {
if *quiet { if *quiet {
level = slog.LevelError 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 *url == "" {
if _, err = os.Stat(*configFile); errors.Is(err, os.ErrNotExist) || *reconfigure { if _, err = os.Stat(*configFile); errors.Is(err, os.ErrNotExist) || *reconfigure {

View file

@ -27,6 +27,7 @@ func handleMain() int {
quiet := flag.Bool("quiet", false, "Log errors only") quiet := flag.Bool("quiet", false, "Log errors only")
verbose := flag.Bool("verbose", false, "Print more logs") verbose := flag.Bool("verbose", false, "Print more logs")
debug := flag.Bool("debug", false, "Print even 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") configFileName := flag.String("config", "", "Configuration file name")
flag.Parse() flag.Parse()
@ -46,7 +47,13 @@ func handleMain() int {
if *quiet { if *quiet {
level = slog.LevelError 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 != "" { if *configFileName != "" {
err = internal.ReadConfig(*configFileName, config) err = internal.ReadConfig(*configFileName, config)

View file

@ -41,6 +41,7 @@ func handleMain() int {
quiet := flag.Bool("quiet", false, "Log errors only") quiet := flag.Bool("quiet", false, "Log errors only")
verbose := flag.Bool("verbose", false, "Print more logs") verbose := flag.Bool("verbose", false, "Print more logs")
debug := flag.Bool("debug", false, "Print even 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") 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") askEncryptionKey := flag.Bool("ask-encryption-key", false, "Read encryption key from input")
fileName := flag.String("file", "", "Write content of the note to a file") fileName := flag.String("file", "", "Write content of the note to a file")
@ -72,7 +73,13 @@ func handleMain() int {
if *quiet { if *quiet {
level = slog.LevelError 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 { if *askEncryptionKey {
fmt.Print("Encryption key: ") fmt.Print("Encryption key: ")