4
0
Эх сурвалжийг харах

Add option to toggle date/time in log messages

Frédéric Guillot 6 жил өмнө
parent
commit
91508c50b5
5 өөрчлөгдсөн 49 нэмэгдсэн , 1 устгасан
  1. 4 0
      cli/cli.go
  2. 9 0
      config/options.go
  3. 2 0
      config/parser.go
  4. 15 1
      logger/logger.go
  5. 19 0
      miniflux.1

+ 4 - 0
cli/cli.go

@@ -78,6 +78,10 @@ func Parse() {
 		return
 	}
 
+	if config.Opts.LogDateTime() {
+		logger.EnableDateTime()
+	}
+
 	if flagDebugMode || config.Opts.HasDebugMode() {
 		logger.EnableDebug()
 	}

+ 9 - 0
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))

+ 2 - 0
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":

+ 15 - 1
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...)
 }

+ 19 - 0
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