|
@@ -5,6 +5,7 @@ package logger
|
5
|
5
|
|
6
|
6
|
import (
|
7
|
7
|
"bufio"
|
|
8
|
+ "bytes"
|
8
|
9
|
"fmt"
|
9
|
10
|
"os"
|
10
|
11
|
"time"
|
|
@@ -32,6 +33,20 @@ const (
|
32
|
33
|
LogError
|
33
|
34
|
)
|
34
|
35
|
|
|
36
|
+var (
|
|
37
|
+ colorTimeGrey = ansi.ColorFunc("243")
|
|
38
|
+ colorGrey = ansi.ColorFunc("8")
|
|
39
|
+ colorAlert = ansi.ColorFunc("232+b:red")
|
|
40
|
+ colorWarn = ansi.ColorFunc("black:214")
|
|
41
|
+ colorInfo = ansi.ColorFunc("117")
|
|
42
|
+ colorDebug = ansi.ColorFunc("78")
|
|
43
|
+ colorSection = ansi.ColorFunc("229")
|
|
44
|
+ separator = colorGrey(":")
|
|
45
|
+
|
|
46
|
+ colorableStdout = colorable.NewColorableStdout()
|
|
47
|
+ colorableStderr = colorable.NewColorableStderr()
|
|
48
|
+)
|
|
49
|
+
|
35
|
50
|
var (
|
36
|
51
|
// LogLevelNames takes a config name and gives the real log level.
|
37
|
52
|
LogLevelNames = map[string]Level{
|
|
@@ -230,51 +245,56 @@ func (logger *singleLogger) Log(level Level, logType string, messageParts ...str
|
230
|
245
|
}
|
231
|
246
|
|
232
|
247
|
// assemble full line
|
233
|
|
- timeGrey := ansi.ColorFunc("243")
|
234
|
|
- grey := ansi.ColorFunc("8")
|
235
|
|
- alert := ansi.ColorFunc("232+b:red")
|
236
|
|
- warn := ansi.ColorFunc("black:214")
|
237
|
|
- info := ansi.ColorFunc("117")
|
238
|
|
- debug := ansi.ColorFunc("78")
|
239
|
|
- section := ansi.ColorFunc("229")
|
240
|
248
|
|
241
|
249
|
levelDisplay := LogLevelDisplayNames[level]
|
242
|
250
|
if level == LogError {
|
243
|
|
- levelDisplay = alert(levelDisplay)
|
|
251
|
+ levelDisplay = colorAlert(levelDisplay)
|
244
|
252
|
} else if level == LogWarning {
|
245
|
|
- levelDisplay = warn(levelDisplay)
|
|
253
|
+ levelDisplay = colorWarn(levelDisplay)
|
246
|
254
|
} else if level == LogInfo {
|
247
|
|
- levelDisplay = info(levelDisplay)
|
|
255
|
+ levelDisplay = colorInfo(levelDisplay)
|
248
|
256
|
} else if level == LogDebug {
|
249
|
|
- levelDisplay = debug(levelDisplay)
|
|
257
|
+ levelDisplay = colorDebug(levelDisplay)
|
250
|
258
|
}
|
251
|
259
|
|
252
|
|
- sep := grey(":")
|
253
|
|
- fullStringFormatted := fmt.Sprintf("%s %s %s %s %s %s ", timeGrey(time.Now().UTC().Format("2006-01-02T15:04:05.000Z")), sep, levelDisplay, sep, section(logType), sep)
|
254
|
|
- fullStringRaw := fmt.Sprintf("%s : %s : %s : ", time.Now().UTC().Format("2006-01-02T15:04:05Z"), LogLevelDisplayNames[level], logType)
|
|
260
|
+ var formattedBuf, rawBuf bytes.Buffer
|
|
261
|
+ fmt.Fprintf(&formattedBuf, "%s %s %s %s %s %s ", colorTimeGrey(time.Now().UTC().Format("2006-01-02T15:04:05.000Z")), separator, levelDisplay, separator, colorSection(logType), separator)
|
|
262
|
+ if logger.MethodFile.Enabled {
|
|
263
|
+ fmt.Fprintf(&rawBuf, "%s : %s : %s : ", time.Now().UTC().Format("2006-01-02T15:04:05Z"), LogLevelDisplayNames[level], logType)
|
|
264
|
+ }
|
255
|
265
|
for i, p := range messageParts {
|
256
|
|
- fullStringFormatted += p
|
257
|
|
- fullStringRaw += p
|
|
266
|
+ formattedBuf.WriteString(p)
|
|
267
|
+ if logger.MethodFile.Enabled {
|
|
268
|
+ rawBuf.WriteString(p)
|
|
269
|
+ }
|
258
|
270
|
if i != len(messageParts)-1 {
|
259
|
|
- fullStringFormatted += " " + sep + " "
|
260
|
|
- fullStringRaw += " : "
|
|
271
|
+ formattedBuf.WriteRune(' ')
|
|
272
|
+ formattedBuf.WriteString(separator)
|
|
273
|
+ formattedBuf.WriteRune(' ')
|
|
274
|
+ if logger.MethodFile.Enabled {
|
|
275
|
+ rawBuf.WriteString(" : ")
|
|
276
|
+ }
|
261
|
277
|
}
|
262
|
278
|
}
|
|
279
|
+ formattedBuf.WriteRune('\n')
|
|
280
|
+ if logger.MethodFile.Enabled {
|
|
281
|
+ rawBuf.WriteRune('\n')
|
|
282
|
+ }
|
263
|
283
|
|
264
|
284
|
// output
|
265
|
285
|
if logger.MethodSTDOUT {
|
266
|
286
|
logger.stdoutWriteLock.Lock()
|
267
|
|
- fmt.Fprintln(colorable.NewColorableStdout(), fullStringFormatted)
|
|
287
|
+ colorableStdout.Write(formattedBuf.Bytes())
|
268
|
288
|
logger.stdoutWriteLock.Unlock()
|
269
|
289
|
}
|
270
|
290
|
if logger.MethodSTDERR {
|
271
|
291
|
logger.stdoutWriteLock.Lock()
|
272
|
|
- fmt.Fprintln(colorable.NewColorableStderr(), fullStringFormatted)
|
|
292
|
+ colorableStderr.Write(formattedBuf.Bytes())
|
273
|
293
|
logger.stdoutWriteLock.Unlock()
|
274
|
294
|
}
|
275
|
295
|
if logger.MethodFile.Enabled {
|
276
|
296
|
logger.fileWriteLock.Lock()
|
277
|
|
- logger.MethodFile.Writer.WriteString(fullStringRaw + "\n")
|
|
297
|
+ logger.MethodFile.Writer.Write(rawBuf.Bytes())
|
278
|
298
|
logger.MethodFile.Writer.Flush()
|
279
|
299
|
logger.fileWriteLock.Unlock()
|
280
|
300
|
}
|