From 91508c50b54c9a0375856a17b2e774d42782b81d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Guillot?= Date: Sat, 8 Jun 2019 17:16:12 -0700 Subject: [PATCH] Add option to toggle date/time in log messages --- cli/cli.go | 4 ++++ config/options.go | 9 +++++++++ config/parser.go | 2 ++ logger/logger.go | 16 +++++++++++++++- miniflux.1 | 19 +++++++++++++++++++ 5 files changed, 49 insertions(+), 1 deletion(-) diff --git a/cli/cli.go b/cli/cli.go index eba1ee3d..f130d9af 100644 --- a/cli/cli.go +++ b/cli/cli.go @@ -78,6 +78,10 @@ func Parse() { return } + if config.Opts.LogDateTime() { + logger.EnableDateTime() + } + if flagDebugMode || config.Opts.HasDebugMode() { logger.EnableDebug() } diff --git a/config/options.go b/config/options.go index 06d3edde..e23a4ae4 100644 --- a/config/options.go +++ b/config/options.go @@ -11,6 +11,7 @@ import ( const ( defaultHTTPS = false + defaultLogDateTime = false defaultHSTS = true defaultHTTPService = true defaultSchedulerService = true @@ -47,6 +48,7 @@ const ( // Options contains configuration options. type Options struct { HTTPS bool + logDateTime bool hsts bool httpService bool schedulerService bool @@ -84,6 +86,7 @@ type Options struct { func NewOptions() *Options { return &Options{ HTTPS: defaultHTTPS, + logDateTime: defaultLogDateTime, hsts: defaultHSTS, httpService: defaultHTTPService, schedulerService: defaultSchedulerService, @@ -118,6 +121,11 @@ func NewOptions() *Options { } } +// LogDateTime returns true if the date/time should be displayed in log messages. +func (o *Options) LogDateTime() bool { + return o.logDateTime +} + // HasDebugMode returns true if debug mode is enabled. func (o *Options) HasDebugMode() bool { return o.debug @@ -283,6 +291,7 @@ func (o *Options) HTTPClientMaxBodySize() int64 { func (o *Options) String() string { var builder strings.Builder + builder.WriteString(fmt.Sprintf("LOG_DATE_TIME: %v\n", o.logDateTime)) builder.WriteString(fmt.Sprintf("DEBUG: %v\n", o.debug)) builder.WriteString(fmt.Sprintf("HTTP_SERVICE: %v\n", o.httpService)) builder.WriteString(fmt.Sprintf("SCHEDULER_SERVICE: %v\n", o.schedulerService)) diff --git a/config/parser.go b/config/parser.go index 6de45504..7e70db5f 100644 --- a/config/parser.go +++ b/config/parser.go @@ -71,6 +71,8 @@ func (p *Parser) parseLines(lines []string) (err error) { value := strings.TrimSpace(fields[1]) switch key { + case "LOG_DATE_TIME": + p.opts.logDateTime = parseBool(value, defaultLogDateTime) case "DEBUG": p.opts.debug = parseBool(value, defaultDebug) case "BASE_URL": diff --git a/logger/logger.go b/logger/logger.go index a430c0de..f329b2c6 100644 --- a/logger/logger.go +++ b/logger/logger.go @@ -7,9 +7,11 @@ package logger // import "miniflux.app/logger" import ( "fmt" "os" + "time" ) var requestedLevel = InfoLevel +var displayDateTime = false // LogLevel type. type LogLevel uint32 @@ -43,6 +45,11 @@ func (level LogLevel) String() string { } } +// EnableDateTime enables date time in log messages. +func EnableDateTime() { + displayDateTime = true +} + // EnableDebug increases logging, more verbose (debug) func EnableDebug() { requestedLevel = DebugLevel @@ -79,6 +86,13 @@ func Fatal(format string, v ...interface{}) { } func formatMessage(level LogLevel, format string, v ...interface{}) { - prefix := fmt.Sprintf("[%s] ", level.String()) + var prefix string + + if displayDateTime { + prefix = fmt.Sprintf("[%s] [%s] ", time.Now().Format("2006-01-02T15:04:05"), level) + } else { + prefix = fmt.Sprintf("[%s] ", level) + } + fmt.Fprintf(os.Stderr, prefix+format+"\n", v...) } diff --git a/miniflux.1 b/miniflux.1 index d9e7616a..19ec39fb 100644 --- a/miniflux.1 +++ b/miniflux.1 @@ -78,11 +78,30 @@ Show application version\&. Show application version\&. .RE +.SH CONFIGURATION FILE +The configuration file is a text file that follow these rules: +.LP +- Miniflux expects each line to be in KEY=VALUE format. +.br +- Lines beginning with # are processed as comments and ignored. +.br +- Blank lines are ignored. +.br +- There is no variable interpolation. +.PP +Keys are the same as the environment variables described below. +.br +Environment variables override the values defined in the config file. + .SH ENVIRONMENT .TP .B DEBUG Set the value to 1 to enable debug logs\&. .TP +.TP +.B LOG_DATE_TIME +Display the date and time in log messages\&. +.TP .B WORKER_POOL_SIZE Number of background workers (default is 5)\&. .TP