/
main.go
70 lines (58 loc) · 1.26 KB
/
main.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
package main
import (
"flag"
"io/ioutil"
log "github.com/cihub/seelog"
"github.com/getsentry/raven-go"
"gopkg.in/yaml.v2"
)
var configfile = flag.String("c", "config.yaml", "The config file.")
var cfg struct {
Sentry string
Server string
Logger string
DevMode bool
}
var Raven *raven.Client
func main() {
parseCmdLine()
initLogger()
httpServer()
}
func parseCmdLine() {
flag.Parse()
if conf, err := ioutil.ReadFile(*configfile); err != nil {
panic(err)
} else {
if err = yaml.Unmarshal(conf, &cfg); err != nil {
panic(err)
}
}
}
func initLogger() {
var err error
// 初始化raven
if cfg.Sentry != "" {
Raven, err = raven.NewClient(cfg.Sentry, nil)
if err != nil {
log.Error("Init Sentry Error:", err)
}
}
// 初始化logger
if cfg.Logger != "" {
// 自定义一个seelog raven receiver
receiver := &RavenReciver{Client: Raven}
parseParams := &log.CfgParseParams{
CustomReceiverProducers: map[string]log.CustomReceiverProducer{
"sentry": func(log.CustomReceiverInitArgs) (log.CustomReceiver, error) {
return receiver, nil
},
},
}
if logger, err := log.LoggerFromParamConfigAsFile(cfg.Logger, parseParams); err == nil {
log.ReplaceLogger(logger)
} else {
log.Error("Parse Logger Error: ", err)
}
}
}