Add option to toggle date/time in log messages

This commit is contained in:
Frédéric Guillot 2019-06-08 17:16:12 -07:00 committed by fguillot
parent f7b7b63e3f
commit 91508c50b5
5 changed files with 49 additions and 1 deletions

View file

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

View file

@ -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))

View file

@ -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":

View file

@ -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...)
}

View file

@ -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