Skip to content

Commit 6a56352

Browse files
committed
feat: introduce log format config option
1 parent c100094 commit 6a56352

5 files changed

Lines changed: 2256 additions & 2252 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,7 @@ You can specify configuration options either via a config file (default: `config
191191
| `server.listen_ipv6` /<br> `WAKAPI_LISTEN_IPV6` | `::1` | IPv6 network address to listen on (set to `'-'` to disable IPv6) |
192192
| `server.listen_socket` /<br> `WAKAPI_LISTEN_SOCKET` | - | UNIX socket to listen on (set to `'-'` to disable UNIX socket) |
193193
| `server.listen_socket_mode` /<br> `WAKAPI_LISTEN_SOCKET_MODE` | `0666` | Permission mode to create UNIX socket with |
194+
| `server.log_format` /<br> `WAKAPI_LOG_FORMAT` | `text` | Format for structured logging (plain text or JSON) (options: `text`, `json`) |
194195
| `server.timeout_sec` /<br> `WAKAPI_TIMEOUT_SEC` | `30` | Request timeout in seconds |
195196
| `server.tls_cert_path` /<br> `WAKAPI_TLS_CERT_PATH` | - | Path of SSL server certificate (leave blank to not use HTTPS) |
196197
| `server.tls_key_path` /<br> `WAKAPI_TLS_KEY_PATH` | - | Path of SSL server private key (leave blank to not use HTTPS) |

config.default.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ server:
88
listen_ipv6: ::1 # set to '-' to disable ipv6
99
listen_socket: # set to '-' to disable unix sockets
1010
listen_socket_mode: 0666 # permission mode to create unix socket with
11+
log_format: text # format for structured logging (text or json)
1112
timeout_sec: 30 # request timeout
1213
tls_cert_path: # leave blank to not use https
1314
tls_key_path: # leave blank to not use https

config/config.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ type serverConfig struct {
176176
ListenSocket string `yaml:"listen_socket" default:"" env:"WAKAPI_LISTEN_SOCKET"`
177177
ListenSocketMode uint32 `yaml:"listen_socket_mode" default:"0666" env:"WAKAPI_LISTEN_SOCKET_MODE"`
178178
TimeoutSec int `yaml:"timeout_sec" default:"30" env:"WAKAPI_TIMEOUT_SEC"`
179+
LogFormat string `yaml:"log_format" default:"text" env:"WAKAPI_LOG_FORMAT"`
179180
BasePath string `yaml:"base_path" default:"/" env:"WAKAPI_BASE_PATH"`
180181
PublicUrl string `yaml:"public_url" default:"http://localhost:3000" env:"WAKAPI_PUBLIC_URL"`
181182
PublicNetUrl *url.URL `yaml:"-"`
@@ -592,7 +593,7 @@ func Load(configFlag string, version string) *Config {
592593

593594
env = config.Env
594595

595-
InitLogger(config.IsDev())
596+
InitLogger(config.Server.LogFormat)
596597

597598
config.Version = strings.TrimSpace(version)
598599
tagVersionMatch, _ := regexp.MatchString(`\d+\.\d+\.\d+`, config.Version)

config/logging.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,16 @@
11
package config
22

33
import (
4-
"github.com/Marlliton/slogpretty"
54
"log/slog"
65
"os"
76
"time"
7+
8+
"github.com/Marlliton/slogpretty"
89
)
910

10-
func InitLogger(isDev bool) {
11+
func InitLogger(logFormat string) {
1112
var handler slog.Handler
12-
if isDev {
13-
handler = slogpretty.New(os.Stdout, &slogpretty.Options{
14-
Level: slog.LevelDebug,
15-
Colorful: true,
16-
})
17-
} else {
13+
if logFormat == "json" {
1814
handler = slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{
1915
Level: slog.LevelInfo,
2016
ReplaceAttr: func(groups []string, a slog.Attr) slog.Attr {
@@ -25,6 +21,11 @@ func InitLogger(isDev bool) {
2521
}
2622
return a
2723
}})
24+
} else {
25+
handler = slogpretty.New(os.Stdout, &slogpretty.Options{
26+
Level: slog.LevelDebug,
27+
Colorful: true,
28+
})
2829
}
2930
slog.SetDefault(slog.New(handler))
3031
}

0 commit comments

Comments
 (0)