GO Web 编程:http://www.kancloud.cn/kancloud/web-application-with-golang/44105
我的golang工程:https://github.com/javahongxi/go.web.red.git
uber zap test
- package main
- import (
- "go.uber.org/zap"
- "time"
- "go.uber.org/zap/zapcore"
- "net/http"
- "bufio"
- "os"
- )
- func main() {
- //logger, _ := zap.NewProduction()
- //defer logger.Sync() // flushes buffer, if any
- //sugar := logger.Sugar()
- //url := "www.baidu.com"
- //sugar.Infow("Failed to fetch URL.",
- // // Structured context as loosely-typed key-value pairs.
- // "url", url,
- // "attempt", 3,
- // "backoff", time.Second,
- //)
- //sugar.Infof("Failed to fetch URL: %s", url)
- encoder_cfg := zapcore.EncoderConfig{
- // Keys can be anything except the empty string.
- TimeKey: "T",
- LevelKey: "L",
- NameKey: "N",
- CallerKey: "C",
- MessageKey: "M",
- StacktraceKey: "S",
- LineEnding: zapcore.DefaultLineEnding,
- EncodeLevel: zapcore.CapitalLevelEncoder,
- EncodeTime: TimeEncoder,
- EncodeDuration: zapcore.StringDurationEncoder,
- EncodeCaller: zapcore.ShortCallerEncoder,
- }
- Curr_level := zap.NewAtomicLevelAt(zap.DebugLevel)
- go func() {
- http.ListenAndServe(":9090", &Curr_level)
- }()
- custom_cfg := zap.Config{
- Level: Curr_level,
- Development: true,
- Encoding: "console",
- EncoderConfig: encoder_cfg,
- OutputPaths: []string{"stderr", "qihu-secret-business.log"},
- ErrorOutputPaths: []string{"stderr"},
- }
- url := "www.baidu.com"
- logger, _ := custom_cfg.Build()
- new_logger := logger.Named("qihu-secret-business")
- defer new_logger.Sync()
- new_logger.Debug("adv_event_type_handle", zap.String("a", "1"))
- new_logger.Info("adv_event_type_handle",
- // Structured context as strongly-typed Field values.
- zap.String("url", url),
- zap.Int("attempt", 3),
- zap.Duration("backoff", time.Second),
- )
- reader := bufio.NewReader(os.Stdin)
- for {
- data, _, _ := reader.ReadLine()
- command := string(data)
- if command == "start" {
- break
- }
- }
- new_logger.Debug("adv_event_type_handle", zap.String("b", "2"))
- new_logger.Info("adv_event_type_handle", zap.String("c", "3"))
- }
- func TimeEncoder(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
- enc.AppendString("[" + t.Format("2006-01-02 15:04:05") + "]")
- }
[2017-05-23 12:08:26]DEBUGadv_os_businesszap_t/zap_t.go:63adv_event_type_handle{"a": "1"}
[2017-05-23
12:08:26]INFOadv_os_businesszap_t/zap_t.go:69adv_event_type_handle{"url":
"www.baidu.com", "attempt": 3, "backoff": "1s"}
其他:进程启动管理supervisor, 日志分割logrotate, 性能监控https://github.com/grafana/grafana
/etc/supervisor.conf
[program:simpletest]
command=/home/shenhongxi/go/bin/a
autostart=true
autorestart=true
startsecs=10
;logfile=/home/shenhongxi/log/simpletest.log
/etc/logrotate.d/simpletest
/home/shenhongxi/go/*.log {
missingok
notifempty
nocompress
daily
rotate 5
size 204800
}
原文链接:[http://wely.iteye.com/blog/2375584]