feat: add json log format option
Add log_format config field ("text" default, "json" for structured
JSON output) to support machine-readable logging.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -34,7 +34,14 @@ func main() {
|
|||||||
level.Set(slog.LevelInfo)
|
level.Set(slog.LevelInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
logger := slog.New(slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{Level: level}))
|
var handler slog.Handler
|
||||||
|
opts := &slog.HandlerOptions{Level: level}
|
||||||
|
if cfg.LogFormat == "json" {
|
||||||
|
handler = slog.NewJSONHandler(os.Stderr, opts)
|
||||||
|
} else {
|
||||||
|
handler = slog.NewTextHandler(os.Stderr, opts)
|
||||||
|
}
|
||||||
|
logger := slog.New(handler)
|
||||||
slog.SetDefault(logger)
|
slog.SetDefault(logger)
|
||||||
|
|
||||||
ctx, cancel := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM)
|
ctx, cancel := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM)
|
||||||
|
|||||||
@@ -11,7 +11,8 @@ import (
|
|||||||
type Config struct {
|
type Config struct {
|
||||||
SSH SSHConfig `toml:"ssh"`
|
SSH SSHConfig `toml:"ssh"`
|
||||||
Auth AuthConfig `toml:"auth"`
|
Auth AuthConfig `toml:"auth"`
|
||||||
LogLevel string `toml:"log_level"`
|
LogLevel string `toml:"log_level"`
|
||||||
|
LogFormat string `toml:"log_format"` // "text" (default) or "json"
|
||||||
}
|
}
|
||||||
|
|
||||||
type SSHConfig struct {
|
type SSHConfig struct {
|
||||||
@@ -73,6 +74,9 @@ func applyDefaults(cfg *Config) {
|
|||||||
if cfg.LogLevel == "" {
|
if cfg.LogLevel == "" {
|
||||||
cfg.LogLevel = "info"
|
cfg.LogLevel = "info"
|
||||||
}
|
}
|
||||||
|
if cfg.LogFormat == "" {
|
||||||
|
cfg.LogFormat = "text"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func validate(cfg *Config) error {
|
func validate(cfg *Config) error {
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
log_level = "info"
|
log_level = "info"
|
||||||
|
log_format = "text" # "text" or "json"
|
||||||
|
|
||||||
[ssh]
|
[ssh]
|
||||||
listen_addr = ":2222"
|
listen_addr = ":2222"
|
||||||
|
|||||||
Reference in New Issue
Block a user