/
log.go
114 lines (97 loc) · 2.28 KB
/
log.go
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
package main
import "bufio"
import "strings"
import "net"
import "fmt"
import "os"
import "strconv"
import "log"
import "github.com/jimlawless/cfg"
var ROOT = "/tmp/"
var PORT = 24000
var BIND_ADDR = ""
var tags = map[string]*Logger{}
var day_tags = map[string]*DailyLogger{}
func handle_client(conn net.Conn) {
reader := bufio.NewReader(conn)
for {
line, err := reader.ReadString('\n')
if err != nil {
break
}
index := strings.IndexByte(line, ':')
if index == -1 {
continue
}
tag := line[0:index]
logger, present := tags[tag]
day_logger, day_present := day_tags[tag]
if !present && !day_present {
continue
}
l := line[index+1:]
log.Printf("tag:%s line:%s", tag, l)
if logger != nil {
logger.ch <- l
}
if day_logger != nil {
day_logger.ch <- l
}
}
}
func init_tags() {
tags["application"] = NewLogger("application")
tags["device"] = NewLogger("device")
tags["ng_application"] = NewLogger("ng_application")
tags["service"] = NewLogger("service")
tags["alarm_info"] = NewLogger("alarm_info")
day_tags["login"] = NewDailyLogger("login")
day_tags["payment"] = NewDailyLogger("payment")
day_tags["register"] = NewDailyLogger("register")
day_tags["level"] = NewDailyLogger("level")
day_tags["mission"] = NewDailyLogger("mission")
day_tags["consumption"] = NewDailyLogger("consumption")
day_tags["coin"] = NewDailyLogger("coin")
}
func read_cfg() {
app_cfg := make(map[string]string)
err := cfg.Load("log.cfg", app_cfg)
if err != nil {
log.Fatal(err)
}
root, present := app_cfg["root"]
if !present {
fmt.Println("need config root directory")
os.Exit(1)
}
ROOT = root
port, present := app_cfg["port"]
if !present {
fmt.Println("need config listen port")
os.Exit(1)
}
nport, err := strconv.Atoi(port)
if err != nil {
fmt.Println("need config listen port")
os.Exit(1)
}
PORT = nport
fmt.Printf("root:%s port:%d\n", ROOT, PORT)
if _, present = app_cfg["bind_addr"]; present {
BIND_ADDR = app_cfg["bind_addr"]
}
fmt.Printf("root:%s bind addr:%s port:%d\n", ROOT, BIND_ADDR, PORT)
}
func main() {
read_cfg()
log.SetFlags(log.Lshortfile | log.LstdFlags)
init_tags()
for _, t := range tags {
go t.Run()
}
for _, t := range day_tags {
go t.Run()
}
addr := fmt.Sprintf("%s:%d", BIND_ADDR, PORT)
Serve(addr, handle_client)
}