mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
*: configure server logger
- Add/Document "logger" to support structured logging.
- This makes functional tests run easier, since zap logger
provides built-in log redirect to files.
- "etcd --logger-option=zap" to enable structured logging.
- Current "capnslog" will still be used as "default".
- We may switch the default or deprecate "capnslog" in v3.5.
- Either way, will clearly be documented.
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
This commit is contained in:
@@ -23,11 +23,10 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/coreos/pkg/capnslog"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
var (
|
||||
plog = capnslog.NewPackageLogger("github.com/coreos/etcd", "proxy/tcpproxy")
|
||||
)
|
||||
var plog = capnslog.NewPackageLogger("github.com/coreos/etcd", "proxy/tcpproxy")
|
||||
|
||||
type remote struct {
|
||||
mu sync.Mutex
|
||||
@@ -61,6 +60,7 @@ func (r *remote) isActive() bool {
|
||||
}
|
||||
|
||||
type TCPProxy struct {
|
||||
Logger *zap.Logger
|
||||
Listener net.Listener
|
||||
Endpoints []*net.SRV
|
||||
MonitorInterval time.Duration
|
||||
@@ -86,7 +86,11 @@ func (tp *TCPProxy) Run() error {
|
||||
for _, ep := range tp.Endpoints {
|
||||
eps = append(eps, fmt.Sprintf("%s:%d", ep.Target, ep.Port))
|
||||
}
|
||||
plog.Printf("ready to proxy client requests to %+v", eps)
|
||||
if tp.Logger != nil {
|
||||
tp.Logger.Info("ready to proxy client requests", zap.Strings("endpoints", eps))
|
||||
} else {
|
||||
plog.Printf("ready to proxy client requests to %+v", eps)
|
||||
}
|
||||
|
||||
go tp.runMonitor()
|
||||
for {
|
||||
@@ -175,7 +179,11 @@ func (tp *TCPProxy) serve(in net.Conn) {
|
||||
break
|
||||
}
|
||||
remote.inactivate()
|
||||
plog.Warningf("deactivated endpoint [%s] due to %v for %v", remote.addr, err, tp.MonitorInterval)
|
||||
if tp.Logger != nil {
|
||||
tp.Logger.Warn("deactivated endpoint", zap.String("address", remote.addr), zap.Duration("interval", tp.MonitorInterval), zap.Error(err))
|
||||
} else {
|
||||
plog.Warningf("deactivated endpoint [%s] due to %v for %v", remote.addr, err, tp.MonitorInterval)
|
||||
}
|
||||
}
|
||||
|
||||
if out == nil {
|
||||
@@ -205,9 +213,17 @@ func (tp *TCPProxy) runMonitor() {
|
||||
}
|
||||
go func(r *remote) {
|
||||
if err := r.tryReactivate(); err != nil {
|
||||
plog.Warningf("failed to activate endpoint [%s] due to %v (stay inactive for another %v)", r.addr, err, tp.MonitorInterval)
|
||||
if tp.Logger != nil {
|
||||
tp.Logger.Warn("failed to activate endpoint (stay inactive for another interval)", zap.String("address", r.addr), zap.Duration("interval", tp.MonitorInterval), zap.Error(err))
|
||||
} else {
|
||||
plog.Warningf("failed to activate endpoint [%s] due to %v (stay inactive for another %v)", r.addr, err, tp.MonitorInterval)
|
||||
}
|
||||
} else {
|
||||
plog.Printf("activated %s", r.addr)
|
||||
if tp.Logger != nil {
|
||||
tp.Logger.Info("activated", zap.String("address", r.addr))
|
||||
} else {
|
||||
plog.Printf("activated %s", r.addr)
|
||||
}
|
||||
}
|
||||
}(rem)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user