blob: a5cc7cfe0212e389a57d69c5a553bbc4d30e73e4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
package loggers
import (
"fmt"
"strings"
"sync"
)
var factoryMap map[string]Logger
var factoryMutex sync.Mutex
// Factory is there to retrieve a logger based on various settings.
func Factory(sourceName, loggerName string, logRotation Strategy) Logger {
factoryMutex.Lock()
defer factoryMutex.Unlock()
id := fmt.Sprintf("sourceName:%s,fileBase:%s,loggerName:%s", sourceName,
logRotation.FileBase, loggerName)
if factoryMap == nil {
factoryMap = make(map[string]Logger)
}
singleton, ok := factoryMap[id]
if !ok {
switch strings.ToLower(loggerName) {
case "none":
singleton = none{}
case "stdout":
singleton = newStdout()
factoryMap[id] = singleton
case "file":
singleton = newFile(logRotation)
factoryMap[id] = singleton
case "fout":
singleton = newFout(logRotation)
factoryMap[id] = singleton
default:
panic(fmt.Sprintf("Unsupported logger type '%s'", loggerName))
}
}
return singleton
}
// FactoryRotate invokes a log rotation of all loggers.
func FactoryRotate() {
factoryMutex.Lock()
defer factoryMutex.Unlock()
if factoryMap == nil {
return
}
for _, logger := range factoryMap {
logger.Rotate()
}
}
|