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
}
有疑问加站长微信联系(非本文作者)