Skip to content

Commit 86c7151

Browse files
authored
Merge pull request #36 from cobaltcore-dev/log-pretty-print
config: add log-pretty-print flag for JSON pretty print
2 parents 1c7a0c4 + 078f3b4 commit 86c7151

3 files changed

Lines changed: 25 additions & 4 deletions

File tree

pkg/commands/producer_ops_log.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ var (
2222
opsNatsSubject string
2323
opsNatsMetricsSubject string
2424
opsLogToStdout bool
25+
opsLogPrettyPrint bool
2526
opsLogRetentionDays int
2627
opsMaxLogFileSize int64
2728
opsPromEnabled bool
@@ -128,6 +129,7 @@ Following this configuration change, the RadosGW will log operations to the file
128129
NatsSubject: opsNatsSubject,
129130
NatsMetricsSubject: opsNatsMetricsSubject,
130131
LogToStdout: opsLogToStdout,
132+
LogPrettyPrint: opsLogPrettyPrint,
131133
LogRetentionDays: opsLogRetentionDays,
132134
MaxLogFileSize: opsMaxLogFileSize,
133135
Prometheus: opsPromEnabled,
@@ -232,6 +234,10 @@ Following this configuration change, the RadosGW will log operations to the file
232234
event.Bool("log_to_stdout", config.LogToStdout)
233235
}
234236

237+
if config.LogPrettyPrint {
238+
event.Bool("log_pretty_print", config.LogPrettyPrint)
239+
}
240+
235241
event.Int("log_retention_days", config.LogRetentionDays)
236242
event.Int64("max_log_file_size", config.MaxLogFileSize)
237243

@@ -530,6 +536,7 @@ func mergeOpsLogConfigWithEnv(cfg opslog.OpsLogConfig) opslog.OpsLogConfig {
530536
cfg.NatsSubject = getEnv("NATS_SUBJECT", cfg.NatsSubject)
531537
cfg.NatsMetricsSubject = getEnv("NATS_METRICS_SUBJECT", cfg.NatsMetricsSubject)
532538
cfg.LogToStdout = getEnvBool("LOG_TO_STDOUT", cfg.LogToStdout)
539+
cfg.LogPrettyPrint = getEnvBool("LOG_PRETTY_PRINT", cfg.LogPrettyPrint)
533540
cfg.LogRetentionDays = getEnvInt("LOG_RETENTION_DAYS", cfg.LogRetentionDays)
534541
cfg.MaxLogFileSize = getEnvInt64("MAX_LOG_FILE_SIZE", cfg.MaxLogFileSize)
535542
cfg.PrometheusPort = getEnvInt("PROMETHEUS_PORT", cfg.PrometheusPort)
@@ -618,6 +625,7 @@ func init() {
618625
opsLogCmd.Flags().StringVar(&opsNatsSubject, "nats-subject", "rgw.s3.ops", "NATS subject to publish results")
619626
opsLogCmd.Flags().StringVar(&opsNatsMetricsSubject, "nats-metrics-subject", "rgw.s3.ops.aggregated.metrics", "NATS subject to publish aggregated metrics")
620627
opsLogCmd.Flags().BoolVar(&opsLogToStdout, "log-to-stdout", false, "Log operations to stdout instead of a file")
628+
opsLogCmd.Flags().BoolVar(&opsLogPrettyPrint, "log-pretty-print", false, "Enable pretty printing for log output")
621629
opsLogCmd.Flags().IntVar(&opsLogRetentionDays, "log-retention-days", 1, "Number of days to retain old log files")
622630
opsLogCmd.Flags().Int64Var(&opsMaxLogFileSize, "max-log-file-size", 10, "Maximum log file size in MB before rotation (e.g., 10 for 10 MB)")
623631
opsLogCmd.Flags().BoolVar(&opsPromEnabled, "prometheus", false, "Enable Prometheus metrics")

pkg/producers/opslog/config.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ type OpsLogConfig struct {
1313
NatsMetricsSubject string
1414
UseNats bool
1515
LogToStdout bool
16+
LogPrettyPrint bool
1617
LogRetentionDays int // Number of days to keep old log files
1718
MaxLogFileSize int64 // Maximum log file size in bytes before rotation
1819
Prometheus bool

pkg/producers/opslog/opslog.go

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,14 @@ func processLogEntries(cfg OpsLogConfig, nc *nats.Conn, watcher *fsnotify.Watche
263263

264264
// Print to stdout if enabled
265265
if cfg.LogToStdout {
266-
if b, err := json.MarshalIndent(logEntry, "", " "); err == nil {
266+
var b []byte
267+
var err error
268+
if cfg.LogPrettyPrint {
269+
b, err = json.MarshalIndent(logEntry, "", " ")
270+
} else {
271+
b, err = json.Marshal(logEntry)
272+
}
273+
if err == nil {
267274
fmt.Println(string(b))
268275
}
269276
}
@@ -380,13 +387,18 @@ func handleConnection(cfg OpsLogConfig, conn net.Conn, nc *nats.Conn, metrics *M
380387

381388
// Conditional logging to stdout if enabled
382389
if cfg.LogToStdout {
383-
logEntryBytes, err := json.Marshal(logEntry)
384-
// logEntryBytes, err := json.MarshalIndent(logEntry, "", " ")
390+
var b []byte
391+
var err error
392+
if cfg.LogPrettyPrint {
393+
b, err = json.MarshalIndent(logEntry, "", " ")
394+
} else {
395+
b, err = json.Marshal(logEntry)
396+
}
385397
if err != nil {
386398
log.Error().Err(err).Msg("Error marshalling log entry for stdout")
387399
continue
388400
}
389-
fmt.Println(string(logEntryBytes)) // Print log entry to stdout
401+
fmt.Println(string(b)) // Print log entry to stdout
390402
}
391403

392404
// Publish the individual log entry to NATS or print locally

0 commit comments

Comments
 (0)