prune util/log and user logger (#1237)
* prune util/log and user logger Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org> * plaintext logger Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org> * add newline Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
This commit is contained in:
parent
ceed8942fc
commit
117f56ebf7
@ -7,7 +7,7 @@ import (
|
|||||||
|
|
||||||
"github.com/bwmarrin/discordgo"
|
"github.com/bwmarrin/discordgo"
|
||||||
"github.com/micro/go-micro/v2/agent/input"
|
"github.com/micro/go-micro/v2/agent/input"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
type discordConn struct {
|
type discordConn struct {
|
||||||
@ -74,7 +74,7 @@ func (dc *discordConn) Send(e *input.Event) error {
|
|||||||
fields := strings.Split(e.To, ":")
|
fields := strings.Split(e.To, ":")
|
||||||
_, err := dc.master.session.ChannelMessageSend(fields[0], string(e.Data))
|
_, err := dc.master.session.ChannelMessageSend(fields[0], string(e.Data))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Log("[bot][loop][send]", err)
|
log.Error("[bot][loop][send]", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@ import (
|
|||||||
|
|
||||||
"github.com/forestgiant/sliceutil"
|
"github.com/forestgiant/sliceutil"
|
||||||
"github.com/micro/go-micro/v2/agent/input"
|
"github.com/micro/go-micro/v2/agent/input"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
tgbotapi "gopkg.in/telegram-bot-api.v4"
|
tgbotapi "gopkg.in/telegram-bot-api.v4"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -104,7 +104,7 @@ func (tc *telegramConn) Send(event *input.Event) error {
|
|||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// probably it could be because of nested HTML tags -- telegram doesn't allow nested tags
|
// probably it could be because of nested HTML tags -- telegram doesn't allow nested tags
|
||||||
log.Log("[telegram][Send] error:", err)
|
log.Error("[telegram][Send] error:", err)
|
||||||
msgConfig.Text = "This bot couldn't send the response (Internal error)"
|
msgConfig.Text = "This bot couldn't send the response (Internal error)"
|
||||||
tc.input.api.Send(msgConfig)
|
tc.input.api.Send(msgConfig)
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ import (
|
|||||||
"github.com/gorilla/websocket"
|
"github.com/gorilla/websocket"
|
||||||
"github.com/micro/go-micro/v2/api/handler"
|
"github.com/micro/go-micro/v2/api/handler"
|
||||||
"github.com/micro/go-micro/v2/broker"
|
"github.com/micro/go-micro/v2/broker"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -136,7 +136,7 @@ func (c *conn) writeLoop() {
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Log(err.Error())
|
log.Error(err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -214,7 +214,7 @@ func (b *brokerHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
ws, err := b.u.Upgrade(w, r, nil)
|
ws, err := b.u.Upgrade(w, r, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Log(err.Error())
|
log.Error(err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package certmagic
|
package certmagic
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"reflect"
|
"reflect"
|
||||||
@ -21,6 +22,9 @@ func TestCertMagic(t *testing.T) {
|
|||||||
}
|
}
|
||||||
l, err := NewProvider().Listen()
|
l, err := NewProvider().Listen()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if _, ok := err.(*net.OpError); ok {
|
||||||
|
t.Skip("Run under non privileged user")
|
||||||
|
}
|
||||||
t.Fatal(err.Error())
|
t.Fatal(err.Error())
|
||||||
}
|
}
|
||||||
l.Close()
|
l.Close()
|
||||||
|
@ -10,7 +10,7 @@ import (
|
|||||||
|
|
||||||
"github.com/gorilla/handlers"
|
"github.com/gorilla/handlers"
|
||||||
"github.com/micro/go-micro/v2/api/server"
|
"github.com/micro/go-micro/v2/api/server"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
type httpServer struct {
|
type httpServer struct {
|
||||||
@ -65,7 +65,7 @@ func (s *httpServer) Start() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Logf("HTTP API Listening on %s", l.Addr().String())
|
log.Infof("HTTP API Listening on %s", l.Addr().String())
|
||||||
|
|
||||||
s.mtx.Lock()
|
s.mtx.Lock()
|
||||||
s.address = l.Addr().String()
|
s.address = l.Addr().String()
|
||||||
|
@ -11,9 +11,9 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/micro/go-micro/v2/codec/json"
|
"github.com/micro/go-micro/v2/codec/json"
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/registry"
|
"github.com/micro/go-micro/v2/registry"
|
||||||
"github.com/micro/go-micro/v2/util/addr"
|
"github.com/micro/go-micro/v2/util/addr"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
|
||||||
"github.com/nats-io/nats-server/v2/server"
|
"github.com/nats-io/nats-server/v2/server"
|
||||||
nats "github.com/nats-io/nats.go"
|
nats "github.com/nats-io/nats.go"
|
||||||
)
|
)
|
||||||
@ -167,7 +167,7 @@ func (n *natsBroker) serve(exit chan bool) error {
|
|||||||
for _, node := range service.Nodes {
|
for _, node := range service.Nodes {
|
||||||
u, err := url.Parse("nats://" + node.Address)
|
u, err := url.Parse("nats://" + node.Address)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Log(err)
|
log.Info(err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
// append to the cluster routes
|
// append to the cluster routes
|
||||||
@ -242,7 +242,7 @@ func (n *natsBroker) serve(exit chan bool) error {
|
|||||||
select {
|
select {
|
||||||
case err := <-n.closeCh:
|
case err := <-n.closeCh:
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Log(err)
|
log.Info(err)
|
||||||
}
|
}
|
||||||
case <-exit:
|
case <-exit:
|
||||||
// deregister on exit
|
// deregister on exit
|
||||||
|
@ -13,9 +13,9 @@ import (
|
|||||||
|
|
||||||
"github.com/micro/go-micro/v2/broker"
|
"github.com/micro/go-micro/v2/broker"
|
||||||
"github.com/micro/go-micro/v2/codec/json"
|
"github.com/micro/go-micro/v2/codec/json"
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/registry"
|
"github.com/micro/go-micro/v2/registry"
|
||||||
"github.com/micro/go-micro/v2/util/addr"
|
"github.com/micro/go-micro/v2/util/addr"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
|
||||||
"github.com/nats-io/nats-server/v2/server"
|
"github.com/nats-io/nats-server/v2/server"
|
||||||
nats "github.com/nats-io/nats.go"
|
nats "github.com/nats-io/nats.go"
|
||||||
)
|
)
|
||||||
@ -164,7 +164,7 @@ func (n *natsBroker) serve(exit chan bool) error {
|
|||||||
for _, node := range service.Nodes {
|
for _, node := range service.Nodes {
|
||||||
u, err := url.Parse("nats://" + node.Address)
|
u, err := url.Parse("nats://" + node.Address)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Log(err)
|
log.Error(err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
// append to the cluster routes
|
// append to the cluster routes
|
||||||
|
@ -8,7 +8,7 @@ import (
|
|||||||
"github.com/micro/go-micro/v2/broker"
|
"github.com/micro/go-micro/v2/broker"
|
||||||
pb "github.com/micro/go-micro/v2/broker/service/proto"
|
pb "github.com/micro/go-micro/v2/broker/service/proto"
|
||||||
"github.com/micro/go-micro/v2/client"
|
"github.com/micro/go-micro/v2/client"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
type serviceBroker struct {
|
type serviceBroker struct {
|
||||||
|
@ -3,7 +3,7 @@ package service
|
|||||||
import (
|
import (
|
||||||
"github.com/micro/go-micro/v2/broker"
|
"github.com/micro/go-micro/v2/broker"
|
||||||
pb "github.com/micro/go-micro/v2/broker/service/proto"
|
pb "github.com/micro/go-micro/v2/broker/service/proto"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
type serviceSub struct {
|
type serviceSub struct {
|
||||||
|
@ -12,12 +12,12 @@ import (
|
|||||||
"github.com/micro/go-micro/v2/client"
|
"github.com/micro/go-micro/v2/client"
|
||||||
"github.com/micro/go-micro/v2/client/selector"
|
"github.com/micro/go-micro/v2/client/selector"
|
||||||
"github.com/micro/go-micro/v2/debug/trace"
|
"github.com/micro/go-micro/v2/debug/trace"
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/registry"
|
"github.com/micro/go-micro/v2/registry"
|
||||||
"github.com/micro/go-micro/v2/runtime"
|
"github.com/micro/go-micro/v2/runtime"
|
||||||
"github.com/micro/go-micro/v2/server"
|
"github.com/micro/go-micro/v2/server"
|
||||||
"github.com/micro/go-micro/v2/store"
|
"github.com/micro/go-micro/v2/store"
|
||||||
"github.com/micro/go-micro/v2/transport"
|
"github.com/micro/go-micro/v2/transport"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
|
||||||
|
|
||||||
// clients
|
// clients
|
||||||
cgrpc "github.com/micro/go-micro/v2/client/grpc"
|
cgrpc "github.com/micro/go-micro/v2/client/grpc"
|
||||||
|
@ -6,7 +6,7 @@ import (
|
|||||||
"github.com/micro/go-micro/v2/client"
|
"github.com/micro/go-micro/v2/client"
|
||||||
"github.com/micro/go-micro/v2/config/source"
|
"github.com/micro/go-micro/v2/config/source"
|
||||||
proto "github.com/micro/go-micro/v2/config/source/service/proto"
|
proto "github.com/micro/go-micro/v2/config/source/service/proto"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
123
debug/log/os.go
123
debug/log/os.go
@ -1,13 +1,7 @@
|
|||||||
package log
|
package log
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
|
||||||
"encoding/json"
|
|
||||||
"io"
|
|
||||||
"os"
|
|
||||||
"strings"
|
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
"github.com/micro/go-micro/v2/util/ring"
|
"github.com/micro/go-micro/v2/util/ring"
|
||||||
@ -25,106 +19,10 @@ type osLog struct {
|
|||||||
|
|
||||||
type osStream struct {
|
type osStream struct {
|
||||||
stream chan Record
|
stream chan Record
|
||||||
stop chan bool
|
|
||||||
}
|
|
||||||
|
|
||||||
// watch io stream
|
|
||||||
func (o *osLog) run() {
|
|
||||||
// save outputs
|
|
||||||
stdout := *os.Stdout
|
|
||||||
stderr := *os.Stderr
|
|
||||||
|
|
||||||
// new os pipe
|
|
||||||
r, w := io.Pipe()
|
|
||||||
|
|
||||||
// create new iopipes
|
|
||||||
r1, w1, _ := os.Pipe()
|
|
||||||
r2, w2, _ := os.Pipe()
|
|
||||||
|
|
||||||
// create tea readers
|
|
||||||
tee1 := io.TeeReader(r1, &stdout)
|
|
||||||
tee2 := io.TeeReader(r2, &stderr)
|
|
||||||
|
|
||||||
// start copying
|
|
||||||
go io.Copy(w, tee1)
|
|
||||||
go io.Copy(w, tee2)
|
|
||||||
|
|
||||||
// set default go log output
|
|
||||||
//log.SetOutput(w2)
|
|
||||||
|
|
||||||
// replace os stdout and os stderr
|
|
||||||
*os.Stdout = *w1
|
|
||||||
*os.Stderr = *w2
|
|
||||||
|
|
||||||
// this should short circuit everything
|
|
||||||
defer func() {
|
|
||||||
// reset stdout and stderr
|
|
||||||
*os.Stdout = stdout
|
|
||||||
*os.Stderr = stderr
|
|
||||||
//log.SetOutput(stderr)
|
|
||||||
|
|
||||||
// close all the outputs
|
|
||||||
r.Close()
|
|
||||||
r1.Close()
|
|
||||||
r2.Close()
|
|
||||||
w.Close()
|
|
||||||
w1.Close()
|
|
||||||
w2.Close()
|
|
||||||
}()
|
|
||||||
|
|
||||||
// read from standard error
|
|
||||||
scanner := bufio.NewReader(r)
|
|
||||||
|
|
||||||
for {
|
|
||||||
// read the line
|
|
||||||
line, err := scanner.ReadString('\n')
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
// check if the line exists
|
|
||||||
if len(line) == 0 {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
// parse the record
|
|
||||||
var r Record
|
|
||||||
if line[0] == '{' {
|
|
||||||
json.Unmarshal([]byte(line), &r)
|
|
||||||
} else {
|
|
||||||
r = Record{
|
|
||||||
Timestamp: time.Now(),
|
|
||||||
Message: strings.TrimSuffix(line, "\n"),
|
|
||||||
Metadata: make(map[string]string),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
o.Lock()
|
|
||||||
|
|
||||||
// write to the buffer
|
|
||||||
o.buffer.Put(r)
|
|
||||||
|
|
||||||
// check subs and send to stream
|
|
||||||
for id, sub := range o.subs {
|
|
||||||
// send to stream
|
|
||||||
select {
|
|
||||||
case <-sub.stop:
|
|
||||||
delete(o.subs, id)
|
|
||||||
case sub.stream <- r:
|
|
||||||
// send to stream
|
|
||||||
default:
|
|
||||||
// do not block
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
o.Unlock()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read reads log entries from the logger
|
// Read reads log entries from the logger
|
||||||
func (o *osLog) Read(...ReadOption) ([]Record, error) {
|
func (o *osLog) Read(...ReadOption) ([]Record, error) {
|
||||||
o.once.Do(func() {
|
|
||||||
go o.run()
|
|
||||||
})
|
|
||||||
|
|
||||||
var records []Record
|
var records []Record
|
||||||
|
|
||||||
// read the last 100 records
|
// read the last 100 records
|
||||||
@ -137,29 +35,18 @@ func (o *osLog) Read(...ReadOption) ([]Record, error) {
|
|||||||
|
|
||||||
// Write writes records to log
|
// Write writes records to log
|
||||||
func (o *osLog) Write(r Record) error {
|
func (o *osLog) Write(r Record) error {
|
||||||
o.once.Do(func() {
|
o.buffer.Put(r)
|
||||||
go o.run()
|
return nil
|
||||||
})
|
|
||||||
|
|
||||||
// generate output
|
|
||||||
out := o.format(r) + "\n"
|
|
||||||
_, err := os.Stderr.Write([]byte(out))
|
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stream log records
|
// Stream log records
|
||||||
func (o *osLog) Stream() (Stream, error) {
|
func (o *osLog) Stream() (Stream, error) {
|
||||||
o.once.Do(func() {
|
|
||||||
go o.run()
|
|
||||||
})
|
|
||||||
|
|
||||||
o.Lock()
|
o.Lock()
|
||||||
defer o.Unlock()
|
defer o.Unlock()
|
||||||
|
|
||||||
// create stream
|
// create stream
|
||||||
st := &osStream{
|
st := &osStream{
|
||||||
stream: make(chan Record, 128),
|
stream: make(chan Record, 128),
|
||||||
stop: make(chan bool),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// save stream
|
// save stream
|
||||||
@ -173,12 +60,6 @@ func (o *osStream) Chan() <-chan Record {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (o *osStream) Stop() error {
|
func (o *osStream) Stop() error {
|
||||||
select {
|
|
||||||
case <-o.stop:
|
|
||||||
return nil
|
|
||||||
default:
|
|
||||||
close(o.stop)
|
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,10 +2,11 @@ package logger
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
|
||||||
"os"
|
"os"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
dlog "github.com/micro/go-micro/v2/debug/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
type defaultLogger struct {
|
type defaultLogger struct {
|
||||||
@ -36,44 +37,57 @@ func (l *defaultLogger) Error(err error) Logger {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (l *defaultLogger) Log(level Level, v ...interface{}) {
|
func (l *defaultLogger) Log(level Level, v ...interface{}) {
|
||||||
|
// TODO decide does we need to write message if log level not used?
|
||||||
if !l.opts.Level.Enabled(level) {
|
if !l.opts.Level.Enabled(level) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
msg := fmt.Sprint(v...)
|
|
||||||
|
|
||||||
fields := l.opts.Fields
|
fields := l.opts.Fields
|
||||||
fields["level"] = level.String()
|
fields["level"] = level.String()
|
||||||
fields["message"] = msg
|
|
||||||
if l.err != nil {
|
if l.err != nil {
|
||||||
fields["error"] = l.err.Error()
|
fields["error"] = l.err.Error()
|
||||||
}
|
}
|
||||||
|
|
||||||
enc := json.NewEncoder(l.opts.Out)
|
rec := dlog.Record{
|
||||||
|
Timestamp: time.Now(),
|
||||||
if err := enc.Encode(fields); err != nil {
|
Message: fmt.Sprint(v...),
|
||||||
log.Fatal(err)
|
Metadata: make(map[string]string),
|
||||||
}
|
}
|
||||||
|
for k, v := range fields {
|
||||||
|
rec.Metadata[k] = fmt.Sprintf("%v", v)
|
||||||
|
}
|
||||||
|
|
||||||
|
dlog.DefaultLog.Write(rec)
|
||||||
|
|
||||||
|
t := rec.Timestamp.Format("2006-01-02 15:04:05")
|
||||||
|
fmt.Printf("%s %v\n", t, rec.Message)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *defaultLogger) Logf(level Level, format string, v ...interface{}) {
|
func (l *defaultLogger) Logf(level Level, format string, v ...interface{}) {
|
||||||
|
// TODO decide does we need to write message if log level not used?
|
||||||
if level < l.opts.Level {
|
if level < l.opts.Level {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
msg := fmt.Sprintf(format, v...)
|
|
||||||
|
|
||||||
fields := l.opts.Fields
|
fields := l.opts.Fields
|
||||||
fields["level"] = level.String()
|
fields["level"] = level.String()
|
||||||
fields["message"] = msg
|
|
||||||
if l.err != nil {
|
if l.err != nil {
|
||||||
fields["error"] = l.err.Error()
|
fields["error"] = l.err.Error()
|
||||||
}
|
}
|
||||||
|
|
||||||
enc := json.NewEncoder(l.opts.Out)
|
rec := dlog.Record{
|
||||||
|
Timestamp: time.Now(),
|
||||||
if err := enc.Encode(fields); err != nil {
|
Message: fmt.Sprintf(format, v...),
|
||||||
log.Fatal(err)
|
Metadata: make(map[string]string),
|
||||||
|
}
|
||||||
|
for k, v := range fields {
|
||||||
|
rec.Metadata[k] = fmt.Sprintf("%v", v)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dlog.DefaultLog.Write(rec)
|
||||||
|
|
||||||
|
t := rec.Timestamp.Format("2006-01-02 15:04:05")
|
||||||
|
fmt.Printf("%s %v\n", t, rec.Message)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *defaultLogger) Options() Options {
|
func (n *defaultLogger) Options() Options {
|
||||||
|
@ -15,6 +15,7 @@ import (
|
|||||||
"github.com/micro/go-micro/v2/client"
|
"github.com/micro/go-micro/v2/client"
|
||||||
cmucp "github.com/micro/go-micro/v2/client/mucp"
|
cmucp "github.com/micro/go-micro/v2/client/mucp"
|
||||||
rtr "github.com/micro/go-micro/v2/client/selector/router"
|
rtr "github.com/micro/go-micro/v2/client/selector/router"
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/network/resolver/dns"
|
"github.com/micro/go-micro/v2/network/resolver/dns"
|
||||||
pbNet "github.com/micro/go-micro/v2/network/service/proto"
|
pbNet "github.com/micro/go-micro/v2/network/service/proto"
|
||||||
"github.com/micro/go-micro/v2/proxy"
|
"github.com/micro/go-micro/v2/proxy"
|
||||||
@ -27,7 +28,6 @@ import (
|
|||||||
bun "github.com/micro/go-micro/v2/tunnel/broker"
|
bun "github.com/micro/go-micro/v2/tunnel/broker"
|
||||||
tun "github.com/micro/go-micro/v2/tunnel/transport"
|
tun "github.com/micro/go-micro/v2/tunnel/transport"
|
||||||
"github.com/micro/go-micro/v2/util/backoff"
|
"github.com/micro/go-micro/v2/util/backoff"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
|
||||||
pbUtil "github.com/micro/go-micro/v2/util/proto"
|
pbUtil "github.com/micro/go-micro/v2/util/proto"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -15,11 +15,11 @@ import (
|
|||||||
"github.com/micro/go-micro/v2/codec"
|
"github.com/micro/go-micro/v2/codec"
|
||||||
"github.com/micro/go-micro/v2/codec/bytes"
|
"github.com/micro/go-micro/v2/codec/bytes"
|
||||||
"github.com/micro/go-micro/v2/errors"
|
"github.com/micro/go-micro/v2/errors"
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/metadata"
|
"github.com/micro/go-micro/v2/metadata"
|
||||||
"github.com/micro/go-micro/v2/proxy"
|
"github.com/micro/go-micro/v2/proxy"
|
||||||
"github.com/micro/go-micro/v2/router"
|
"github.com/micro/go-micro/v2/router"
|
||||||
"github.com/micro/go-micro/v2/server"
|
"github.com/micro/go-micro/v2/server"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Proxy will transparently proxy requests to an endpoint.
|
// Proxy will transparently proxy requests to an endpoint.
|
||||||
|
6
registry/cache/cache.go
vendored
6
registry/cache/cache.go
vendored
@ -7,8 +7,8 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/registry"
|
"github.com/micro/go-micro/v2/registry"
|
||||||
log "github.com/micro/go-micro/v2/util/log"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Cache is the registry cache interface
|
// Cache is the registry cache interface
|
||||||
@ -339,7 +339,7 @@ func (c *cache) run() {
|
|||||||
c.setStatus(err)
|
c.setStatus(err)
|
||||||
|
|
||||||
if a > 3 {
|
if a > 3 {
|
||||||
log.Log("rcache: ", err, " backing off ", d)
|
log.Info("rcache: ", err, " backing off ", d)
|
||||||
a = 0
|
a = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -362,7 +362,7 @@ func (c *cache) run() {
|
|||||||
c.setStatus(err)
|
c.setStatus(err)
|
||||||
|
|
||||||
if b > 3 {
|
if b > 3 {
|
||||||
log.Log("rcache: ", err, " backing off ", d)
|
log.Info("rcache: ", err, " backing off ", d)
|
||||||
b = 0
|
b = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,8 +15,8 @@ import (
|
|||||||
|
|
||||||
"github.com/coreos/etcd/clientv3"
|
"github.com/coreos/etcd/clientv3"
|
||||||
"github.com/coreos/etcd/etcdserver/api/v3rpc/rpctypes"
|
"github.com/coreos/etcd/etcdserver/api/v3rpc/rpctypes"
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/registry"
|
"github.com/micro/go-micro/v2/registry"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
|
||||||
hash "github.com/mitchellh/hashstructure"
|
hash "github.com/mitchellh/hashstructure"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
)
|
)
|
||||||
|
@ -6,9 +6,9 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/registry"
|
"github.com/micro/go-micro/v2/registry"
|
||||||
"github.com/micro/go-micro/v2/util/kubernetes/client"
|
"github.com/micro/go-micro/v2/util/kubernetes/client"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type k8sWatcher struct {
|
type k8sWatcher struct {
|
||||||
@ -132,7 +132,7 @@ func (k *k8sWatcher) buildPodResults(pod *client.Pod, cache *client.Pod) []*regi
|
|||||||
func (k *k8sWatcher) handleEvent(event client.Event) {
|
func (k *k8sWatcher) handleEvent(event client.Event) {
|
||||||
var pod client.Pod
|
var pod client.Pod
|
||||||
if err := json.Unmarshal([]byte(event.Object), &pod); err != nil {
|
if err := json.Unmarshal([]byte(event.Object), &pod); err != nil {
|
||||||
log.Log("K8s Watcher: Couldnt unmarshal event object from pod")
|
log.Info("K8s Watcher: Couldnt unmarshal event object from pod")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,8 +7,8 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/registry"
|
"github.com/micro/go-micro/v2/registry"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -10,8 +10,8 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/registry"
|
"github.com/micro/go-micro/v2/registry"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -357,14 +357,14 @@ func (r *router) advertiseEvents() error {
|
|||||||
// routing table watcher
|
// routing table watcher
|
||||||
w, err = r.Watch()
|
w, err = r.Watch()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Logf("Error creating watcher: %v", err)
|
log.Errorf("Error creating watcher: %v", err)
|
||||||
time.Sleep(time.Second)
|
time.Sleep(time.Second)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := r.watchTable(w); err != nil {
|
if err := r.watchTable(w); err != nil {
|
||||||
log.Logf("Error watching table: %v", err)
|
log.Errorf("Error watching table: %v", err)
|
||||||
time.Sleep(time.Second)
|
time.Sleep(time.Second)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -538,14 +538,14 @@ func (r *router) Start() error {
|
|||||||
if w == nil {
|
if w == nil {
|
||||||
w, err = r.options.Registry.Watch()
|
w, err = r.options.Registry.Watch()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Logf("failed creating registry watcher: %v", err)
|
log.Errorf("failed creating registry watcher: %v", err)
|
||||||
time.Sleep(time.Second)
|
time.Sleep(time.Second)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := r.watchRegistry(w); err != nil {
|
if err := r.watchRegistry(w); err != nil {
|
||||||
log.Logf("Error watching the registry: %v", err)
|
log.Errorf("Error watching the registry: %v", err)
|
||||||
time.Sleep(time.Second)
|
time.Sleep(time.Second)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -602,7 +602,7 @@ func (r *router) Advertise() (<-chan *Advert, error) {
|
|||||||
return
|
return
|
||||||
default:
|
default:
|
||||||
if err := r.advertiseEvents(); err != nil {
|
if err := r.advertiseEvents(); err != nil {
|
||||||
log.Logf("Error adveritising events: %v", err)
|
log.Errorf("Error adveritising events: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
@ -6,8 +6,8 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/registry/memory"
|
"github.com/micro/go-micro/v2/registry/memory"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func routerTestSetup() Router {
|
func routerTestSetup() Router {
|
||||||
|
@ -6,7 +6,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -5,7 +5,7 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
type runtime struct {
|
type runtime struct {
|
||||||
|
@ -7,9 +7,9 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/runtime"
|
"github.com/micro/go-micro/v2/runtime"
|
||||||
"github.com/micro/go-micro/v2/util/kubernetes/client"
|
"github.com/micro/go-micro/v2/util/kubernetes/client"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// action to take on runtime service
|
// action to take on runtime service
|
||||||
|
@ -5,10 +5,10 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/runtime"
|
"github.com/micro/go-micro/v2/runtime"
|
||||||
"github.com/micro/go-micro/v2/util/kubernetes/api"
|
"github.com/micro/go-micro/v2/util/kubernetes/api"
|
||||||
"github.com/micro/go-micro/v2/util/kubernetes/client"
|
"github.com/micro/go-micro/v2/util/kubernetes/client"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type service struct {
|
type service struct {
|
||||||
|
@ -9,8 +9,8 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
docker "github.com/fsouza/go-dockerclient"
|
docker "github.com/fsouza/go-dockerclient"
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/runtime/local/build"
|
"github.com/micro/go-micro/v2/runtime/local/build"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type Builder struct {
|
type Builder struct {
|
||||||
|
@ -6,10 +6,10 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/runtime/local/build"
|
"github.com/micro/go-micro/v2/runtime/local/build"
|
||||||
"github.com/micro/go-micro/v2/runtime/local/process"
|
"github.com/micro/go-micro/v2/runtime/local/process"
|
||||||
proc "github.com/micro/go-micro/v2/runtime/local/process/os"
|
proc "github.com/micro/go-micro/v2/runtime/local/process/os"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type service struct {
|
type service struct {
|
||||||
|
@ -17,12 +17,12 @@ import (
|
|||||||
"github.com/golang/protobuf/proto"
|
"github.com/golang/protobuf/proto"
|
||||||
"github.com/micro/go-micro/v2/broker"
|
"github.com/micro/go-micro/v2/broker"
|
||||||
"github.com/micro/go-micro/v2/errors"
|
"github.com/micro/go-micro/v2/errors"
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
meta "github.com/micro/go-micro/v2/metadata"
|
meta "github.com/micro/go-micro/v2/metadata"
|
||||||
"github.com/micro/go-micro/v2/registry"
|
"github.com/micro/go-micro/v2/registry"
|
||||||
"github.com/micro/go-micro/v2/server"
|
"github.com/micro/go-micro/v2/server"
|
||||||
"github.com/micro/go-micro/v2/util/addr"
|
"github.com/micro/go-micro/v2/util/addr"
|
||||||
mgrpc "github.com/micro/go-micro/v2/util/grpc"
|
mgrpc "github.com/micro/go-micro/v2/util/grpc"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
|
||||||
mnet "github.com/micro/go-micro/v2/util/net"
|
mnet "github.com/micro/go-micro/v2/util/net"
|
||||||
|
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
@ -356,8 +356,8 @@ func (g *grpcServer) processRequest(stream grpc.ServerStream, service *service,
|
|||||||
fn := func(ctx context.Context, req server.Request, rsp interface{}) (err error) {
|
fn := func(ctx context.Context, req server.Request, rsp interface{}) (err error) {
|
||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != nil {
|
if r := recover(); r != nil {
|
||||||
log.Log("panic recovered: ", r)
|
log.Error("panic recovered: ", r)
|
||||||
log.Logf(string(debug.Stack()))
|
log.Error(string(debug.Stack()))
|
||||||
err = errors.InternalServerError("go.micro.server", "panic recovered: %v", r)
|
err = errors.InternalServerError("go.micro.server", "panic recovered: %v", r)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
@ -656,7 +656,7 @@ func (g *grpcServer) Register() error {
|
|||||||
g.Unlock()
|
g.Unlock()
|
||||||
|
|
||||||
if !registered {
|
if !registered {
|
||||||
log.Logf("Registry [%s] Registering node: %s", config.Registry.String(), node.Id)
|
log.Infof("Registry [%s] Registering node: %s", config.Registry.String(), node.Id)
|
||||||
}
|
}
|
||||||
|
|
||||||
// create registry options
|
// create registry options
|
||||||
@ -691,7 +691,7 @@ func (g *grpcServer) Register() error {
|
|||||||
opts = append(opts, broker.DisableAutoAck())
|
opts = append(opts, broker.DisableAutoAck())
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Logf("Subscribing to topic: %s", sb.Topic())
|
log.Infof("Subscribing to topic: %s", sb.Topic())
|
||||||
sub, err := config.Broker.Subscribe(sb.Topic(), handler, opts...)
|
sub, err := config.Broker.Subscribe(sb.Topic(), handler, opts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -743,7 +743,7 @@ func (g *grpcServer) Deregister() error {
|
|||||||
Nodes: []*registry.Node{node},
|
Nodes: []*registry.Node{node},
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Logf("Deregistering node: %s", node.Id)
|
log.Infof("Deregistering node: %s", node.Id)
|
||||||
if err := config.Registry.Deregister(service); err != nil {
|
if err := config.Registry.Deregister(service); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -759,7 +759,7 @@ func (g *grpcServer) Deregister() error {
|
|||||||
|
|
||||||
for sb, subs := range g.subscribers {
|
for sb, subs := range g.subscribers {
|
||||||
for _, sub := range subs {
|
for _, sub := range subs {
|
||||||
log.Logf("Unsubscribing from topic: %s", sub.Topic())
|
log.Infof("Unsubscribing from topic: %s", sub.Topic())
|
||||||
sub.Unsubscribe()
|
sub.Unsubscribe()
|
||||||
}
|
}
|
||||||
g.subscribers[sb] = nil
|
g.subscribers[sb] = nil
|
||||||
@ -799,7 +799,7 @@ func (g *grpcServer) Start() error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Logf("Server [grpc] Listening on %s", ts.Addr().String())
|
log.Infof("Server [grpc] Listening on %s", ts.Addr().String())
|
||||||
g.Lock()
|
g.Lock()
|
||||||
g.opts.Address = ts.Addr().String()
|
g.opts.Address = ts.Addr().String()
|
||||||
g.Unlock()
|
g.Unlock()
|
||||||
@ -811,18 +811,18 @@ func (g *grpcServer) Start() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Logf("Broker [%s] Connected to %s", config.Broker.String(), config.Broker.Address())
|
log.Infof("Broker [%s] Connected to %s", config.Broker.String(), config.Broker.Address())
|
||||||
}
|
}
|
||||||
|
|
||||||
// announce self to the world
|
// announce self to the world
|
||||||
if err := g.Register(); err != nil {
|
if err := g.Register(); err != nil {
|
||||||
log.Log("Server register error: ", err)
|
log.Errorf("Server register error: ", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// micro: go ts.Accept(s.accept)
|
// micro: go ts.Accept(s.accept)
|
||||||
go func() {
|
go func() {
|
||||||
if err := g.srv.Serve(ts); err != nil {
|
if err := g.srv.Serve(ts); err != nil {
|
||||||
log.Log("gRPC Server start error: ", err)
|
log.Errorf("gRPC Server start error: ", err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
@ -844,7 +844,7 @@ func (g *grpcServer) Start() error {
|
|||||||
// register self on interval
|
// register self on interval
|
||||||
case <-t.C:
|
case <-t.C:
|
||||||
if err := g.Register(); err != nil {
|
if err := g.Register(); err != nil {
|
||||||
log.Log("Server register error: ", err)
|
log.Error("Server register error: ", err)
|
||||||
}
|
}
|
||||||
// wait for exit
|
// wait for exit
|
||||||
case ch = <-g.exit:
|
case ch = <-g.exit:
|
||||||
@ -854,7 +854,7 @@ func (g *grpcServer) Start() error {
|
|||||||
|
|
||||||
// deregister self
|
// deregister self
|
||||||
if err := g.Deregister(); err != nil {
|
if err := g.Deregister(); err != nil {
|
||||||
log.Log("Server deregister error: ", err)
|
log.Error("Server deregister error: ", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// wait for waitgroup
|
// wait for waitgroup
|
||||||
@ -879,7 +879,7 @@ func (g *grpcServer) Start() error {
|
|||||||
// close transport
|
// close transport
|
||||||
ch <- nil
|
ch <- nil
|
||||||
|
|
||||||
log.Logf("Broker [%s] Disconnected from %s", config.Broker.String(), config.Broker.Address())
|
log.Infof("Broker [%s] Disconnected from %s", config.Broker.String(), config.Broker.Address())
|
||||||
// disconnect broker
|
// disconnect broker
|
||||||
config.Broker.Disconnect()
|
config.Broker.Disconnect()
|
||||||
}()
|
}()
|
||||||
|
@ -14,8 +14,8 @@ import (
|
|||||||
"unicode"
|
"unicode"
|
||||||
"unicode/utf8"
|
"unicode/utf8"
|
||||||
|
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/server"
|
"github.com/micro/go-micro/v2/server"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -86,7 +86,7 @@ func prepareEndpoint(method reflect.Method) *methodType {
|
|||||||
replyType = mtype.In(3)
|
replyType = mtype.In(3)
|
||||||
contextType = mtype.In(1)
|
contextType = mtype.In(1)
|
||||||
default:
|
default:
|
||||||
log.Log("method", mname, "of", mtype, "has wrong number of ins:", mtype.NumIn())
|
log.Error("method", mname, "of", mtype, "has wrong number of ins:", mtype.NumIn())
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -94,7 +94,7 @@ func prepareEndpoint(method reflect.Method) *methodType {
|
|||||||
// check stream type
|
// check stream type
|
||||||
streamType := reflect.TypeOf((*server.Stream)(nil)).Elem()
|
streamType := reflect.TypeOf((*server.Stream)(nil)).Elem()
|
||||||
if !argType.Implements(streamType) {
|
if !argType.Implements(streamType) {
|
||||||
log.Log(mname, "argument does not implement Streamer interface:", argType)
|
log.Error(mname, "argument does not implement Streamer interface:", argType)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -102,30 +102,30 @@ func prepareEndpoint(method reflect.Method) *methodType {
|
|||||||
|
|
||||||
// First arg need not be a pointer.
|
// First arg need not be a pointer.
|
||||||
if !isExportedOrBuiltinType(argType) {
|
if !isExportedOrBuiltinType(argType) {
|
||||||
log.Log(mname, "argument type not exported:", argType)
|
log.Error(mname, "argument type not exported:", argType)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if replyType.Kind() != reflect.Ptr {
|
if replyType.Kind() != reflect.Ptr {
|
||||||
log.Log("method", mname, "reply type not a pointer:", replyType)
|
log.Error("method", mname, "reply type not a pointer:", replyType)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reply type must be exported.
|
// Reply type must be exported.
|
||||||
if !isExportedOrBuiltinType(replyType) {
|
if !isExportedOrBuiltinType(replyType) {
|
||||||
log.Log("method", mname, "reply type not exported:", replyType)
|
log.Error("method", mname, "reply type not exported:", replyType)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Endpoint() needs one out.
|
// Endpoint() needs one out.
|
||||||
if mtype.NumOut() != 1 {
|
if mtype.NumOut() != 1 {
|
||||||
log.Log("method", mname, "has wrong number of outs:", mtype.NumOut())
|
log.Error("method", mname, "has wrong number of outs:", mtype.NumOut())
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
// The return type of the method must be error.
|
// The return type of the method must be error.
|
||||||
if returnType := mtype.Out(0); returnType != typeOfError {
|
if returnType := mtype.Out(0); returnType != typeOfError {
|
||||||
log.Log("method", mname, "returns", returnType.String(), "not error")
|
log.Error("method", mname, "returns", returnType.String(), "not error")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return &methodType{method: method, ArgType: argType, ReplyType: replyType, ContextType: contextType, stream: stream}
|
return &methodType{method: method, ArgType: argType, ReplyType: replyType, ContextType: contextType, stream: stream}
|
||||||
@ -146,7 +146,7 @@ func (server *rServer) register(rcvr interface{}) error {
|
|||||||
}
|
}
|
||||||
if !isExported(sname) {
|
if !isExported(sname) {
|
||||||
s := "rpc Register: type " + sname + " is not exported"
|
s := "rpc Register: type " + sname + " is not exported"
|
||||||
log.Log(s)
|
log.Error(s)
|
||||||
return errors.New(s)
|
return errors.New(s)
|
||||||
}
|
}
|
||||||
if _, present := server.serviceMap[sname]; present {
|
if _, present := server.serviceMap[sname]; present {
|
||||||
@ -165,7 +165,7 @@ func (server *rServer) register(rcvr interface{}) error {
|
|||||||
|
|
||||||
if len(s.method) == 0 {
|
if len(s.method) == 0 {
|
||||||
s := "rpc Register: type " + sname + " has no exported methods of suitable type"
|
s := "rpc Register: type " + sname + " has no exported methods of suitable type"
|
||||||
log.Log(s)
|
log.Error(s)
|
||||||
return errors.New(s)
|
return errors.New(s)
|
||||||
}
|
}
|
||||||
server.serviceMap[s.name] = s
|
server.serviceMap[s.name] = s
|
||||||
|
@ -9,10 +9,10 @@ import (
|
|||||||
|
|
||||||
"github.com/micro/go-micro/v2/broker"
|
"github.com/micro/go-micro/v2/broker"
|
||||||
"github.com/micro/go-micro/v2/errors"
|
"github.com/micro/go-micro/v2/errors"
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/metadata"
|
"github.com/micro/go-micro/v2/metadata"
|
||||||
"github.com/micro/go-micro/v2/registry"
|
"github.com/micro/go-micro/v2/registry"
|
||||||
"github.com/micro/go-micro/v2/server"
|
"github.com/micro/go-micro/v2/server"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -171,8 +171,8 @@ func (g *grpcServer) createSubHandler(sb *subscriber, opts server.Options) broke
|
|||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != nil {
|
if r := recover(); r != nil {
|
||||||
log.Log("panic recovered: ", r)
|
log.Error("panic recovered: ", r)
|
||||||
log.Logf(string(debug.Stack()))
|
log.Error(string(debug.Stack()))
|
||||||
err = errors.InternalServerError("go.micro.server", "panic recovered: %v", r)
|
err = errors.InternalServerError("go.micro.server", "panic recovered: %v", r)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
@ -20,7 +20,7 @@ import (
|
|||||||
|
|
||||||
"github.com/micro/go-micro/v2/codec"
|
"github.com/micro/go-micro/v2/codec"
|
||||||
merrors "github.com/micro/go-micro/v2/errors"
|
merrors "github.com/micro/go-micro/v2/errors"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -141,7 +141,7 @@ func prepareMethod(method reflect.Method) *methodType {
|
|||||||
replyType = mtype.In(3)
|
replyType = mtype.In(3)
|
||||||
contextType = mtype.In(1)
|
contextType = mtype.In(1)
|
||||||
default:
|
default:
|
||||||
log.Log("method", mname, "of", mtype, "has wrong number of ins:", mtype.NumIn())
|
log.Error("method", mname, "of", mtype, "has wrong number of ins:", mtype.NumIn())
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -149,7 +149,7 @@ func prepareMethod(method reflect.Method) *methodType {
|
|||||||
// check stream type
|
// check stream type
|
||||||
streamType := reflect.TypeOf((*Stream)(nil)).Elem()
|
streamType := reflect.TypeOf((*Stream)(nil)).Elem()
|
||||||
if !argType.Implements(streamType) {
|
if !argType.Implements(streamType) {
|
||||||
log.Log(mname, "argument does not implement Stream interface:", argType)
|
log.Error(mname, "argument does not implement Stream interface:", argType)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -157,30 +157,30 @@ func prepareMethod(method reflect.Method) *methodType {
|
|||||||
|
|
||||||
// First arg need not be a pointer.
|
// First arg need not be a pointer.
|
||||||
if !isExportedOrBuiltinType(argType) {
|
if !isExportedOrBuiltinType(argType) {
|
||||||
log.Log(mname, "argument type not exported:", argType)
|
log.Error(mname, "argument type not exported:", argType)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if replyType.Kind() != reflect.Ptr {
|
if replyType.Kind() != reflect.Ptr {
|
||||||
log.Log("method", mname, "reply type not a pointer:", replyType)
|
log.Error("method", mname, "reply type not a pointer:", replyType)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reply type must be exported.
|
// Reply type must be exported.
|
||||||
if !isExportedOrBuiltinType(replyType) {
|
if !isExportedOrBuiltinType(replyType) {
|
||||||
log.Log("method", mname, "reply type not exported:", replyType)
|
log.Error("method", mname, "reply type not exported:", replyType)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Method needs one out.
|
// Method needs one out.
|
||||||
if mtype.NumOut() != 1 {
|
if mtype.NumOut() != 1 {
|
||||||
log.Log("method", mname, "has wrong number of outs:", mtype.NumOut())
|
log.Error("method", mname, "has wrong number of outs:", mtype.NumOut())
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
// The return type of the method must be error.
|
// The return type of the method must be error.
|
||||||
if returnType := mtype.Out(0); returnType != typeOfError {
|
if returnType := mtype.Out(0); returnType != typeOfError {
|
||||||
log.Log("method", mname, "returns", returnType.String(), "not error")
|
log.Error("method", mname, "returns", returnType.String(), "not error")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return &methodType{method: method, ArgType: argType, ReplyType: replyType, ContextType: contextType, stream: stream}
|
return &methodType{method: method, ArgType: argType, ReplyType: replyType, ContextType: contextType, stream: stream}
|
||||||
@ -509,8 +509,8 @@ func (router *router) ProcessMessage(ctx context.Context, msg Message) (err erro
|
|||||||
defer func() {
|
defer func() {
|
||||||
// recover any panics
|
// recover any panics
|
||||||
if r := recover(); r != nil {
|
if r := recover(); r != nil {
|
||||||
log.Log("panic recovered: ", r)
|
log.Error("panic recovered: ", r)
|
||||||
log.Log(string(debug.Stack()))
|
log.Error(string(debug.Stack()))
|
||||||
err = merrors.InternalServerError("go.micro.server", "panic recovered: %v", r)
|
err = merrors.InternalServerError("go.micro.server", "panic recovered: %v", r)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
@ -15,11 +15,11 @@ import (
|
|||||||
"github.com/micro/go-micro/v2/broker"
|
"github.com/micro/go-micro/v2/broker"
|
||||||
"github.com/micro/go-micro/v2/codec"
|
"github.com/micro/go-micro/v2/codec"
|
||||||
raw "github.com/micro/go-micro/v2/codec/bytes"
|
raw "github.com/micro/go-micro/v2/codec/bytes"
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/metadata"
|
"github.com/micro/go-micro/v2/metadata"
|
||||||
"github.com/micro/go-micro/v2/registry"
|
"github.com/micro/go-micro/v2/registry"
|
||||||
"github.com/micro/go-micro/v2/transport"
|
"github.com/micro/go-micro/v2/transport"
|
||||||
"github.com/micro/go-micro/v2/util/addr"
|
"github.com/micro/go-micro/v2/util/addr"
|
||||||
log "github.com/micro/go-micro/v2/util/log"
|
|
||||||
mnet "github.com/micro/go-micro/v2/util/net"
|
mnet "github.com/micro/go-micro/v2/util/net"
|
||||||
"github.com/micro/go-micro/v2/util/socket"
|
"github.com/micro/go-micro/v2/util/socket"
|
||||||
)
|
)
|
||||||
@ -158,8 +158,8 @@ func (s *rpcServer) ServeConn(sock transport.Socket) {
|
|||||||
|
|
||||||
// recover any panics
|
// recover any panics
|
||||||
if r := recover(); r != nil {
|
if r := recover(); r != nil {
|
||||||
log.Log("panic recovered: ", r)
|
log.Error("panic recovered: ", r)
|
||||||
log.Log(string(debug.Stack()))
|
log.Error(string(debug.Stack()))
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
@ -377,8 +377,8 @@ func (s *rpcServer) ServeConn(sock transport.Socket) {
|
|||||||
|
|
||||||
// recover any panics for outbound process
|
// recover any panics for outbound process
|
||||||
if r := recover(); r != nil {
|
if r := recover(); r != nil {
|
||||||
log.Log("panic recovered: ", r)
|
log.Error("panic recovered: ", r)
|
||||||
log.Log(string(debug.Stack()))
|
log.Error(string(debug.Stack()))
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
@ -409,8 +409,8 @@ func (s *rpcServer) ServeConn(sock transport.Socket) {
|
|||||||
|
|
||||||
// recover any panics for call handler
|
// recover any panics for call handler
|
||||||
if r := recover(); r != nil {
|
if r := recover(); r != nil {
|
||||||
log.Log("panic recovered: ", r)
|
log.Error("panic recovered: ", r)
|
||||||
log.Log(string(debug.Stack()))
|
log.Error(string(debug.Stack()))
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
@ -608,7 +608,7 @@ func (s *rpcServer) Register() error {
|
|||||||
s.RUnlock()
|
s.RUnlock()
|
||||||
|
|
||||||
if !registered {
|
if !registered {
|
||||||
log.Logf("Registry [%s] Registering node: %s", config.Registry.String(), node.Id)
|
log.Infof("Registry [%s] Registering node: %s", config.Registry.String(), node.Id)
|
||||||
}
|
}
|
||||||
|
|
||||||
// create registry options
|
// create registry options
|
||||||
@ -654,7 +654,7 @@ func (s *rpcServer) Register() error {
|
|||||||
opts = append(opts, broker.DisableAutoAck())
|
opts = append(opts, broker.DisableAutoAck())
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Logf("Subscribing to topic: %s", sub.Topic())
|
log.Infof("Subscribing to topic: %s", sub.Topic())
|
||||||
sub, err := config.Broker.Subscribe(sb.Topic(), s.HandleEvent, opts...)
|
sub, err := config.Broker.Subscribe(sb.Topic(), s.HandleEvent, opts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -712,7 +712,7 @@ func (s *rpcServer) Deregister() error {
|
|||||||
Nodes: []*registry.Node{node},
|
Nodes: []*registry.Node{node},
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Logf("Registry [%s] Deregistering node: %s", config.Registry.String(), node.Id)
|
log.Infof("Registry [%s] Deregistering node: %s", config.Registry.String(), node.Id)
|
||||||
if err := config.Registry.Deregister(service); err != nil {
|
if err := config.Registry.Deregister(service); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -734,7 +734,7 @@ func (s *rpcServer) Deregister() error {
|
|||||||
|
|
||||||
for sb, subs := range s.subscribers {
|
for sb, subs := range s.subscribers {
|
||||||
for _, sub := range subs {
|
for _, sub := range subs {
|
||||||
log.Logf("Unsubscribing %s from topic: %s", node.Id, sub.Topic())
|
log.Infof("Unsubscribing %s from topic: %s", node.Id, sub.Topic())
|
||||||
sub.Unsubscribe()
|
sub.Unsubscribe()
|
||||||
}
|
}
|
||||||
s.subscribers[sb] = nil
|
s.subscribers[sb] = nil
|
||||||
@ -760,7 +760,7 @@ func (s *rpcServer) Start() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Logf("Transport [%s] Listening on %s", config.Transport.String(), ts.Addr())
|
log.Infof("Transport [%s] Listening on %s", config.Transport.String(), ts.Addr())
|
||||||
|
|
||||||
// swap address
|
// swap address
|
||||||
s.Lock()
|
s.Lock()
|
||||||
@ -775,15 +775,15 @@ func (s *rpcServer) Start() error {
|
|||||||
|
|
||||||
bname := config.Broker.String()
|
bname := config.Broker.String()
|
||||||
|
|
||||||
log.Logf("Broker [%s] Connected to %s", bname, config.Broker.Address())
|
log.Infof("Broker [%s] Connected to %s", bname, config.Broker.Address())
|
||||||
|
|
||||||
// use RegisterCheck func before register
|
// use RegisterCheck func before register
|
||||||
if err = s.opts.RegisterCheck(s.opts.Context); err != nil {
|
if err = s.opts.RegisterCheck(s.opts.Context); err != nil {
|
||||||
log.Logf("Server %s-%s register check error: %s", config.Name, config.Id, err)
|
log.Errorf("Server %s-%s register check error: %s", config.Name, config.Id, err)
|
||||||
} else {
|
} else {
|
||||||
// announce self to the world
|
// announce self to the world
|
||||||
if err = s.Register(); err != nil {
|
if err = s.Register(); err != nil {
|
||||||
log.Logf("Server %s-%s register error: %s", config.Name, config.Id, err)
|
log.Errorf("Server %s-%s register error: %s", config.Name, config.Id, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -804,7 +804,7 @@ func (s *rpcServer) Start() error {
|
|||||||
// check the error and backoff
|
// check the error and backoff
|
||||||
default:
|
default:
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Logf("Accept error: %v", err)
|
log.Errorf("Accept error: %v", err)
|
||||||
time.Sleep(time.Second)
|
time.Sleep(time.Second)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@ -837,17 +837,17 @@ func (s *rpcServer) Start() error {
|
|||||||
s.RUnlock()
|
s.RUnlock()
|
||||||
rerr := s.opts.RegisterCheck(s.opts.Context)
|
rerr := s.opts.RegisterCheck(s.opts.Context)
|
||||||
if rerr != nil && registered {
|
if rerr != nil && registered {
|
||||||
log.Logf("Server %s-%s register check error: %s, deregister it", config.Name, config.Id, err)
|
log.Errorf("Server %s-%s register check error: %s, deregister it", config.Name, config.Id, err)
|
||||||
// deregister self in case of error
|
// deregister self in case of error
|
||||||
if err := s.Deregister(); err != nil {
|
if err := s.Deregister(); err != nil {
|
||||||
log.Logf("Server %s-%s deregister error: %s", config.Name, config.Id, err)
|
log.Errorf("Server %s-%s deregister error: %s", config.Name, config.Id, err)
|
||||||
}
|
}
|
||||||
} else if rerr != nil && !registered {
|
} else if rerr != nil && !registered {
|
||||||
log.Logf("Server %s-%s register check error: %s", config.Name, config.Id, err)
|
log.Errorf("Server %s-%s register check error: %s", config.Name, config.Id, err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if err := s.Register(); err != nil {
|
if err := s.Register(); err != nil {
|
||||||
log.Logf("Server %s-%s register error: %s", config.Name, config.Id, err)
|
log.Errorf("Server %s-%s register error: %s", config.Name, config.Id, err)
|
||||||
}
|
}
|
||||||
// wait for exit
|
// wait for exit
|
||||||
case ch = <-s.exit:
|
case ch = <-s.exit:
|
||||||
@ -863,7 +863,7 @@ func (s *rpcServer) Start() error {
|
|||||||
if registered {
|
if registered {
|
||||||
// deregister self
|
// deregister self
|
||||||
if err := s.Deregister(); err != nil {
|
if err := s.Deregister(); err != nil {
|
||||||
log.Logf("Server %s-%s deregister error: %s", config.Name, config.Id, err)
|
log.Errorf("Server %s-%s deregister error: %s", config.Name, config.Id, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -879,7 +879,7 @@ func (s *rpcServer) Start() error {
|
|||||||
// close transport listener
|
// close transport listener
|
||||||
ch <- ts.Close()
|
ch <- ts.Close()
|
||||||
|
|
||||||
log.Logf("Broker [%s] Disconnected from %s", bname, config.Broker.Address())
|
log.Infof("Broker [%s] Disconnected from %s", bname, config.Broker.Address())
|
||||||
// disconnect the broker
|
// disconnect the broker
|
||||||
config.Broker.Disconnect()
|
config.Broker.Disconnect()
|
||||||
|
|
||||||
|
@ -10,8 +10,8 @@ import (
|
|||||||
|
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
"github.com/micro/go-micro/v2/codec"
|
"github.com/micro/go-micro/v2/codec"
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/registry"
|
"github.com/micro/go-micro/v2/registry"
|
||||||
log "github.com/micro/go-micro/v2/util/log"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Server is a simple micro server abstraction
|
// Server is a simple micro server abstraction
|
||||||
@ -200,7 +200,7 @@ func Run() error {
|
|||||||
|
|
||||||
ch := make(chan os.Signal, 1)
|
ch := make(chan os.Signal, 1)
|
||||||
signal.Notify(ch, syscall.SIGTERM, syscall.SIGINT)
|
signal.Notify(ch, syscall.SIGTERM, syscall.SIGINT)
|
||||||
log.Logf("Received signal %s", <-ch)
|
log.Infof("Received signal %s", <-ch)
|
||||||
|
|
||||||
return Stop()
|
return Stop()
|
||||||
}
|
}
|
||||||
@ -208,13 +208,13 @@ func Run() error {
|
|||||||
// Start starts the default server
|
// Start starts the default server
|
||||||
func Start() error {
|
func Start() error {
|
||||||
config := DefaultServer.Options()
|
config := DefaultServer.Options()
|
||||||
log.Logf("Starting server %s id %s", config.Name, config.Id)
|
log.Infof("Starting server %s id %s", config.Name, config.Id)
|
||||||
return DefaultServer.Start()
|
return DefaultServer.Start()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stop stops the default server
|
// Stop stops the default server
|
||||||
func Stop() error {
|
func Stop() error {
|
||||||
log.Logf("Stopping server")
|
log.Infof("Stopping server")
|
||||||
return DefaultServer.Stop()
|
return DefaultServer.Stop()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,9 +17,9 @@ import (
|
|||||||
"github.com/micro/go-micro/v2/debug/service/handler"
|
"github.com/micro/go-micro/v2/debug/service/handler"
|
||||||
"github.com/micro/go-micro/v2/debug/stats"
|
"github.com/micro/go-micro/v2/debug/stats"
|
||||||
"github.com/micro/go-micro/v2/debug/trace"
|
"github.com/micro/go-micro/v2/debug/trace"
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/plugin"
|
"github.com/micro/go-micro/v2/plugin"
|
||||||
"github.com/micro/go-micro/v2/server"
|
"github.com/micro/go-micro/v2/server"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
|
||||||
"github.com/micro/go-micro/v2/util/wrapper"
|
"github.com/micro/go-micro/v2/util/wrapper"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -202,7 +202,7 @@ func (s *service) Run() error {
|
|||||||
defer profiler.Stop()
|
defer profiler.Stop()
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Logf("Starting [service] %s", s.Name())
|
log.Infof("Starting [service] %s", s.Name())
|
||||||
|
|
||||||
if err := s.Start(); err != nil {
|
if err := s.Start(); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -7,10 +7,8 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/micro/go-micro/v2/client"
|
"github.com/micro/go-micro/v2/client"
|
||||||
"github.com/micro/go-micro/v2/debug/log/noop"
|
|
||||||
proto "github.com/micro/go-micro/v2/debug/service/proto"
|
proto "github.com/micro/go-micro/v2/debug/service/proto"
|
||||||
"github.com/micro/go-micro/v2/registry/memory"
|
"github.com/micro/go-micro/v2/registry/memory"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
|
||||||
"github.com/micro/go-micro/v2/util/test"
|
"github.com/micro/go-micro/v2/util/test"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -24,9 +22,6 @@ func testShutdown(wg *sync.WaitGroup, cancel func()) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func testService(ctx context.Context, wg *sync.WaitGroup, name string) Service {
|
func testService(ctx context.Context, wg *sync.WaitGroup, name string) Service {
|
||||||
// set no op logger
|
|
||||||
log.SetLogger(noop.NewLog())
|
|
||||||
|
|
||||||
// add self
|
// add self
|
||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
|
|
||||||
|
@ -10,8 +10,8 @@ import (
|
|||||||
"unicode"
|
"unicode"
|
||||||
|
|
||||||
"github.com/lib/pq"
|
"github.com/lib/pq"
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/store"
|
"github.com/micro/go-micro/v2/store"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -5,10 +5,10 @@ import (
|
|||||||
"math"
|
"math"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/sync/leader/etcd"
|
"github.com/micro/go-micro/v2/sync/leader/etcd"
|
||||||
"github.com/micro/go-micro/v2/sync/task"
|
"github.com/micro/go-micro/v2/sync/task"
|
||||||
"github.com/micro/go-micro/v2/sync/task/local"
|
"github.com/micro/go-micro/v2/sync/task/local"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type syncCron struct {
|
type syncCron struct {
|
||||||
@ -35,7 +35,7 @@ func (c *syncCron) Schedule(s task.Schedule, t task.Command) error {
|
|||||||
// leader election
|
// leader election
|
||||||
e, err := c.opts.Leader.Elect(id)
|
e, err := c.opts.Leader.Elect(id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Logf("[cron] leader election error: %v", err)
|
log.Errorf("[cron] leader election error: %v", err)
|
||||||
time.Sleep(backoff(i))
|
time.Sleep(backoff(i))
|
||||||
i++
|
i++
|
||||||
continue
|
continue
|
||||||
@ -55,9 +55,9 @@ func (c *syncCron) Schedule(s task.Schedule, t task.Command) error {
|
|||||||
break Tick
|
break Tick
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Logf("[cron] executing command %s", t.Name)
|
log.Infof("[cron] executing command %s", t.Name)
|
||||||
if err := c.opts.Task.Run(t); err != nil {
|
if err := c.opts.Task.Run(t); err != nil {
|
||||||
log.Logf("[cron] error executing command %s: %v", t.Name, err)
|
log.Errorf("[cron] error executing command %s: %v", t.Name, err)
|
||||||
}
|
}
|
||||||
// leader revoked
|
// leader revoked
|
||||||
case <-r:
|
case <-r:
|
||||||
|
@ -4,9 +4,9 @@ import (
|
|||||||
"runtime/debug"
|
"runtime/debug"
|
||||||
|
|
||||||
"github.com/micro/go-micro/v2/errors"
|
"github.com/micro/go-micro/v2/errors"
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/transport"
|
"github.com/micro/go-micro/v2/transport"
|
||||||
pb "github.com/micro/go-micro/v2/transport/grpc/proto"
|
pb "github.com/micro/go-micro/v2/transport/grpc/proto"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
|
||||||
"google.golang.org/grpc/peer"
|
"google.golang.org/grpc/peer"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -30,7 +30,7 @@ func (m *microTransport) Stream(ts pb.Transport_StreamServer) (err error) {
|
|||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != nil {
|
if r := recover(); r != nil {
|
||||||
log.Log(r, string(debug.Stack()))
|
log.Error(r, string(debug.Stack()))
|
||||||
sock.Close()
|
sock.Close()
|
||||||
err = errors.InternalServerError("go.micro.transport", "panic recovered: %v", r)
|
err = errors.InternalServerError("go.micro.transport", "panic recovered: %v", r)
|
||||||
}
|
}
|
||||||
|
@ -8,8 +8,8 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/transport"
|
"github.com/micro/go-micro/v2/transport"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -949,7 +949,7 @@ func (t *tun) connect() error {
|
|||||||
|
|
||||||
// still connected but the tunnel died
|
// still connected but the tunnel died
|
||||||
if err != nil && t.connected {
|
if err != nil && t.connected {
|
||||||
log.Logf("Tunnel listener died: %v", err)
|
log.Errorf("Tunnel listener died: %v", err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
@ -8,8 +8,8 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/transport"
|
"github.com/micro/go-micro/v2/transport"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type link struct {
|
type link struct {
|
||||||
|
@ -4,7 +4,7 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
type tunListener struct {
|
type tunListener struct {
|
||||||
|
@ -5,8 +5,8 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/transport"
|
"github.com/micro/go-micro/v2/transport"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// session is our pseudo session for transport.Socket
|
// session is our pseudo session for transport.Socket
|
||||||
|
@ -12,8 +12,8 @@ import (
|
|||||||
"path"
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/util/kubernetes/api"
|
"github.com/micro/go-micro/v2/util/kubernetes/api"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -1,15 +0,0 @@
|
|||||||
# Log
|
|
||||||
|
|
||||||
This is the global logger for all micro based libraries.
|
|
||||||
|
|
||||||
## Set Logger
|
|
||||||
|
|
||||||
Set the logger for micro libraries
|
|
||||||
|
|
||||||
```go
|
|
||||||
// import go-micro/util/log
|
|
||||||
import "github.com/micro/go-micro/util/log"
|
|
||||||
|
|
||||||
// SetLogger expects github.com/micro/go-micro/debug/log.Log interface
|
|
||||||
log.SetLogger(mylogger)
|
|
||||||
```
|
|
206
util/log/log.go
206
util/log/log.go
@ -1,206 +0,0 @@
|
|||||||
// Package log is a global internal logger
|
|
||||||
package log
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"os"
|
|
||||||
"sync/atomic"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/micro/go-micro/v2/debug/log"
|
|
||||||
)
|
|
||||||
|
|
||||||
// level is a log level
|
|
||||||
type Level int32
|
|
||||||
|
|
||||||
const (
|
|
||||||
LevelFatal Level = iota
|
|
||||||
LevelError
|
|
||||||
LevelWarn
|
|
||||||
LevelInfo
|
|
||||||
LevelDebug
|
|
||||||
LevelTrace
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
// the local logger
|
|
||||||
logger log.Log = log.DefaultLog
|
|
||||||
|
|
||||||
// default log level is info
|
|
||||||
level = LevelInfo
|
|
||||||
|
|
||||||
// prefix for all messages
|
|
||||||
prefix string
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
switch os.Getenv("MICRO_LOG_LEVEL") {
|
|
||||||
case "trace":
|
|
||||||
level = LevelTrace
|
|
||||||
case "debug":
|
|
||||||
level = LevelDebug
|
|
||||||
case "warn":
|
|
||||||
level = LevelWarn
|
|
||||||
case "info":
|
|
||||||
level = LevelInfo
|
|
||||||
case "error":
|
|
||||||
level = LevelError
|
|
||||||
case "fatal":
|
|
||||||
level = LevelFatal
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l Level) String() string {
|
|
||||||
switch l {
|
|
||||||
case LevelTrace:
|
|
||||||
return "trace"
|
|
||||||
case LevelDebug:
|
|
||||||
return "debug"
|
|
||||||
case LevelWarn:
|
|
||||||
return "warn"
|
|
||||||
case LevelInfo:
|
|
||||||
return "info"
|
|
||||||
case LevelError:
|
|
||||||
return "error"
|
|
||||||
case LevelFatal:
|
|
||||||
return "fatal"
|
|
||||||
default:
|
|
||||||
return "unknown"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Log makes use of github.com/micro/debug/log
|
|
||||||
func Log(v ...interface{}) {
|
|
||||||
if len(prefix) > 0 {
|
|
||||||
v = append([]interface{}{prefix, " "}, v...)
|
|
||||||
}
|
|
||||||
logger.Write(log.Record{
|
|
||||||
Timestamp: time.Now(),
|
|
||||||
Message: fmt.Sprint(v...),
|
|
||||||
Metadata: map[string]string{
|
|
||||||
"level": level.String(),
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// Logf makes use of github.com/micro/debug/log
|
|
||||||
func Logf(format string, v ...interface{}) {
|
|
||||||
if len(prefix) > 0 {
|
|
||||||
format = prefix + " " + format
|
|
||||||
}
|
|
||||||
logger.Write(log.Record{
|
|
||||||
Timestamp: time.Now(),
|
|
||||||
Message: fmt.Sprintf(format, v...),
|
|
||||||
Metadata: map[string]string{
|
|
||||||
"level": level.String(),
|
|
||||||
},
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// WithLevel logs with the level specified
|
|
||||||
func WithLevel(l Level, v ...interface{}) {
|
|
||||||
if l > level {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
Log(v...)
|
|
||||||
}
|
|
||||||
|
|
||||||
// WithLevel logs with the level specified
|
|
||||||
func WithLevelf(l Level, format string, v ...interface{}) {
|
|
||||||
if l > level {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
Logf(format, v...)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Trace provides trace level logging
|
|
||||||
func Trace(v ...interface{}) {
|
|
||||||
WithLevel(LevelTrace, v...)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Tracef provides trace level logging
|
|
||||||
func Tracef(format string, v ...interface{}) {
|
|
||||||
WithLevelf(LevelTrace, format, v...)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Debug provides debug level logging
|
|
||||||
func Debug(v ...interface{}) {
|
|
||||||
WithLevel(LevelDebug, v...)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Debugf provides debug level logging
|
|
||||||
func Debugf(format string, v ...interface{}) {
|
|
||||||
WithLevelf(LevelDebug, format, v...)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Warn provides warn level logging
|
|
||||||
func Warn(v ...interface{}) {
|
|
||||||
WithLevel(LevelWarn, v...)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Warnf provides warn level logging
|
|
||||||
func Warnf(format string, v ...interface{}) {
|
|
||||||
WithLevelf(LevelWarn, format, v...)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Info provides info level logging
|
|
||||||
func Info(v ...interface{}) {
|
|
||||||
WithLevel(LevelInfo, v...)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Infof provides info level logging
|
|
||||||
func Infof(format string, v ...interface{}) {
|
|
||||||
WithLevelf(LevelInfo, format, v...)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Error provides warn level logging
|
|
||||||
func Error(v ...interface{}) {
|
|
||||||
WithLevel(LevelError, v...)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Errorf provides warn level logging
|
|
||||||
func Errorf(format string, v ...interface{}) {
|
|
||||||
WithLevelf(LevelError, format, v...)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fatal logs with Log and then exits with os.Exit(1)
|
|
||||||
func Fatal(v ...interface{}) {
|
|
||||||
WithLevel(LevelFatal, v...)
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fatalf logs with Logf and then exits with os.Exit(1)
|
|
||||||
func Fatalf(format string, v ...interface{}) {
|
|
||||||
WithLevelf(LevelFatal, format, v...)
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetLogger sets the local logger
|
|
||||||
func SetLogger(l log.Log) {
|
|
||||||
logger = l
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetLogger returns the local logger
|
|
||||||
func GetLogger() log.Log {
|
|
||||||
return logger
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetLevel sets the log level
|
|
||||||
func SetLevel(l Level) {
|
|
||||||
atomic.StoreInt32((*int32)(&level), int32(l))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetLevel returns the current level
|
|
||||||
func GetLevel() Level {
|
|
||||||
return level
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set a prefix for the logger
|
|
||||||
func SetPrefix(p string) {
|
|
||||||
prefix = p
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set service name
|
|
||||||
func Name(name string) {
|
|
||||||
prefix = fmt.Sprintf("[%s]", name)
|
|
||||||
}
|
|
@ -16,10 +16,10 @@ import (
|
|||||||
|
|
||||||
"github.com/micro/cli/v2"
|
"github.com/micro/cli/v2"
|
||||||
"github.com/micro/go-micro/v2"
|
"github.com/micro/go-micro/v2"
|
||||||
|
log "github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/registry"
|
"github.com/micro/go-micro/v2/registry"
|
||||||
maddr "github.com/micro/go-micro/v2/util/addr"
|
maddr "github.com/micro/go-micro/v2/util/addr"
|
||||||
mhttp "github.com/micro/go-micro/v2/util/http"
|
mhttp "github.com/micro/go-micro/v2/util/http"
|
||||||
"github.com/micro/go-micro/v2/util/log"
|
|
||||||
mnet "github.com/micro/go-micro/v2/util/net"
|
mnet "github.com/micro/go-micro/v2/util/net"
|
||||||
mls "github.com/micro/go-micro/v2/util/tls"
|
mls "github.com/micro/go-micro/v2/util/tls"
|
||||||
)
|
)
|
||||||
@ -126,7 +126,7 @@ func (s *service) register() error {
|
|||||||
|
|
||||||
// use RegisterCheck func before register
|
// use RegisterCheck func before register
|
||||||
if err := s.opts.RegisterCheck(s.opts.Context); err != nil {
|
if err := s.opts.RegisterCheck(s.opts.Context); err != nil {
|
||||||
log.Logf("Server %s-%s register check error: %s", s.opts.Name, s.opts.Id, err)
|
log.Errorf("Server %s-%s register check error: %s", s.opts.Name, s.opts.Id, err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -185,7 +185,7 @@ func (s *service) start() error {
|
|||||||
if s.static {
|
if s.static {
|
||||||
_, err := os.Stat(static)
|
_, err := os.Stat(static)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
log.Logf("Enabling static file serving from %s", static)
|
log.Infof("Enabling static file serving from %s", static)
|
||||||
s.mux.Handle("/", http.FileServer(http.Dir(static)))
|
s.mux.Handle("/", http.FileServer(http.Dir(static)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -223,7 +223,7 @@ func (s *service) start() error {
|
|||||||
ch <- l.Close()
|
ch <- l.Close()
|
||||||
}()
|
}()
|
||||||
|
|
||||||
log.Logf("Listening on %v", l.Addr().String())
|
log.Infof("Listening on %v", l.Addr().String())
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -245,7 +245,7 @@ func (s *service) stop() error {
|
|||||||
s.exit <- ch
|
s.exit <- ch
|
||||||
s.running = false
|
s.running = false
|
||||||
|
|
||||||
log.Log("Stopping")
|
log.Info("Stopping")
|
||||||
|
|
||||||
for _, fn := range s.opts.AfterStop {
|
for _, fn := range s.opts.AfterStop {
|
||||||
if err := fn(); err != nil {
|
if err := fn(); err != nil {
|
||||||
@ -392,10 +392,10 @@ func (s *service) Run() error {
|
|||||||
select {
|
select {
|
||||||
// wait on kill signal
|
// wait on kill signal
|
||||||
case sig := <-ch:
|
case sig := <-ch:
|
||||||
log.Logf("Received signal %s", sig)
|
log.Infof("Received signal %s", sig)
|
||||||
// wait on context cancel
|
// wait on context cancel
|
||||||
case <-s.opts.Context.Done():
|
case <-s.opts.Context.Done():
|
||||||
log.Logf("Received context shutdown")
|
log.Info("Received context shutdown")
|
||||||
}
|
}
|
||||||
|
|
||||||
// exit reg loop
|
// exit reg loop
|
||||||
|
Loading…
Reference in New Issue
Block a user