@@ -29,10 +29,18 @@ import (
29
29
"os"
30
30
"strings"
31
31
"sync"
32
+ "time"
32
33
33
34
"github.com/rs/zerolog"
34
35
)
35
36
37
+ type TimeFormat int
38
+
39
+ const (
40
+ TimeFormatLocal TimeFormat = 0
41
+ TimeFormatUTC TimeFormat = 1
42
+ )
43
+
36
44
var (
37
45
// The defaultLevels list is used during development to increase the
38
46
// default level for components that we care a little less about.
@@ -72,14 +80,14 @@ type loggingService struct {
72
80
}
73
81
74
82
type LoggerOutputOptions struct {
75
- Color bool // Produce colored logs
76
- JSON bool // Project JSON messages
77
- Stderr bool // Write logs to stderr
78
- LogFile string // Path of file to write to
83
+ Color bool // Produce colored logs
84
+ TimeFormat TimeFormat // Instructs how to print time in logs
85
+ Stderr bool // Write logs to stderr
86
+ LogFile string // Path of file to write to
79
87
}
80
88
81
89
func configureLogger (lg zerolog.ConsoleWriter ) zerolog.ConsoleWriter {
82
- lg .TimeFormat = "2006-01-02T15:04:05-07:00"
90
+ lg .TimeFormat = time . RFC3339
83
91
84
92
lg .FormatLevel = func (i interface {}) string {
85
93
return fmt .Sprintf ("|%s|" , strings .ToUpper (fmt .Sprintf ("%s" , i )))
@@ -93,31 +101,32 @@ func NewRootLogger(options LoggerOutputOptions) (zerolog.Logger, func()) {
93
101
var writers []io.Writer
94
102
var errors []error
95
103
var rotate func ()
104
+
105
+ if options .TimeFormat == TimeFormatUTC {
106
+ zerolog .TimestampFunc = func () time.Time {
107
+ return time .Now ().UTC ()
108
+ }
109
+ }
110
+
96
111
if options .LogFile != "" {
97
112
fileWriter , err := newRotatingWriter (options .LogFile )
98
113
if err != nil {
99
114
errors = append (errors , err )
100
115
options .Stderr = true
101
116
} else {
102
117
rotate = func () { fileWriter .Rotate () }
103
- writer := io .Writer (fileWriter )
104
- if ! options .JSON {
105
- writer = configureLogger (zerolog.ConsoleWriter {
106
- Out : fileWriter ,
107
- NoColor : true ,
108
- })
109
- }
118
+ writer := configureLogger (zerolog.ConsoleWriter {
119
+ Out : fileWriter ,
120
+ NoColor : true ,
121
+ })
110
122
writers = append (writers , writer )
111
123
}
112
124
}
113
125
if options .Stderr {
114
- writer := io .Writer (os .Stderr )
115
- if ! options .JSON {
116
- writer = configureLogger (zerolog.ConsoleWriter {
117
- Out : writer ,
118
- NoColor : ! options .Color ,
119
- })
120
- }
126
+ writer := configureLogger (zerolog.ConsoleWriter {
127
+ Out : os .Stderr ,
128
+ NoColor : ! options .Color ,
129
+ })
121
130
writers = append (writers , writer )
122
131
}
123
132
0 commit comments