소스 검색

pointless optimizations to the logger

tags/v1.0.0-rc1
Shivaram Lingamneni 5 년 전
부모
커밋
ec4f1c189a
1개의 변경된 파일41개의 추가작업 그리고 21개의 파일을 삭제
  1. 41
    21
      irc/logger/logger.go

+ 41
- 21
irc/logger/logger.go 파일 보기

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

Loading…
취소
저장