Blame view

utils/logger.go 2.78 KB
ee23102d   zhangqijia   支持mongo, grpc接服务器
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
  package utils
  
  import (
  	"go.uber.org/zap"
  	"go.uber.org/zap/zapcore"
  	lumberjack "gopkg.in/natefinch/lumberjack.v2"
  	"net/http"
  	"os"
  )
  
  var Sugar *zap.SugaredLogger
  var Logger *zap.Logger
  
  func InitLogger(conf *lumberjack.Logger) {
  	writeSyncer := zapcore.NewMultiWriteSyncer(zapcore.AddSync(os.Stdout), zapcore.AddSync(conf)) //控制台和日志同时输出
  	encoder := getEncoder()
  	core := zapcore.NewCore(encoder, writeSyncer, zapcore.DebugLevel)
  
  	Logger = zap.New(core, zap.AddCaller())
  	Sugar = Logger.Sugar()
  }
  
  func getEncoder() zapcore.Encoder {
  	encoderConfig := zap.NewProductionEncoderConfig()
  	encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
  	encoderConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder
  	return zapcore.NewConsoleEncoder(encoderConfig)
  }
  
  func simpleHttpGet(url string) {
  	Sugar.Debugf("Trying to hit GET request for %s", url)
  	resp, err := http.Get(url)
  	if err != nil {
  		Sugar.Errorf("Error fetching URL %s : Error = %s", url, err)
  	} else {
  		Sugar.Infof("Success! statusCode = %s for URL %s", resp.Status, url)
  		resp.Body.Close()
  	}
  }
  
  func LogTest() {
  	lumberJackLogger := &lumberjack.Logger{
  		Filename:   "./pro2d.log",		// ⽇志⽂件路径
  		MaxSize:    1024,				// 1M=1024KB=1024000byte
  		MaxBackups: 5,					// 最多保留5个备份
  		MaxAge:     30,					// days
  		Compress:   true,				// 是否压缩 disabled by default
  	}
  
  	InitLogger(lumberJackLogger)
  	defer Logger.Sync()
  	for i:=0; i < 10000;i++ {
  		simpleHttpGet("www.baidu.com")
  		simpleHttpGet("http://www.baidu.com")
  	}
  }
  
  //--使用sink 结合es使用
  //func registerSinkDemo() {
  //	zap.RegisterSink("mq", mq.NewMqSink)
  //	writer, close, err := zap.Open("mq://192.168.99.100:9876/log")
  //	if err != nil {
  //		panic(err)
  //	}
  //	defer close()
  //	logger := zap.New(zapcore.NewCore(zapcore.NewJSONEncoder(zap.NewProductionEncoderConfig()), writer, zap.DebugLevel)).Sugar()
  //	logger.Info("hello")
  //}
  //
  //type MqWriteSyncer struct {
  //	topic    string
  //	producer rocketmq.Producer
  //	ctx      context.Context
  //}
  //
  //func (m *MqWriteSyncer) Close() error {
  //	return m.producer.Shutdown()
  //}
  //
  //func (m *MqWriteSyncer) Write(p []byte) (n int, err error) {
  //	msg := &primitive.Message{
  //		Topic: m.topic,
  //		Body:  p,
  //	}
  //	err = m.producer.SendOneWay(m.ctx, msg)
  //	return len(p), err
  //}
  //
  //func (m *MqWriteSyncer) Sync() error {
  //	return nil
  //}
  //
  //func NewMqSink(url *url.URL) (zap.Sink, error) {
  //	broker := fmt.Sprintf("%s:%s", url.Hostname(), url.Port())
  //	topic := url.Path[1:len(url.Path)]
  //	p, _ := rocketmq.NewProducer(
  //		producer.WithNameServer([]string{broker}),
  //		producer.WithRetry(2),
  //	)
  //	err := p.Start()
  //	if err != nil {
  //		fmt.Printf("start producer error: %s", err.Error())
  //		return nil, err
  //	}
  //
  //	return &MqWriteSyncer{producer: p, ctx: context.Background(), topic: topic}, nil
  //}