let http.Server use the main app logger
This commit is contained in:
parent
6d87351e5e
commit
8821506fb1
17
client.go
17
client.go
@ -4,6 +4,7 @@ import "context"
|
|||||||
import "crypto/tls"
|
import "crypto/tls"
|
||||||
import "errors"
|
import "errors"
|
||||||
import "fmt"
|
import "fmt"
|
||||||
|
import "log"
|
||||||
import "math/rand"
|
import "math/rand"
|
||||||
import "net"
|
import "net"
|
||||||
import "net/http"
|
import "net/http"
|
||||||
@ -970,9 +971,21 @@ func (cts *ClientConn) ReportEvent (route_id uint32, pts_id uint32, event_type P
|
|||||||
|
|
||||||
// --------------------------------------------------------------------
|
// --------------------------------------------------------------------
|
||||||
|
|
||||||
|
type client_ctl_log_writer struct {
|
||||||
|
cli *Client
|
||||||
|
}
|
||||||
|
|
||||||
|
func (hlw *client_ctl_log_writer) Write(p []byte) (n int, err error) {
|
||||||
|
// the standard http.Server always requires *log.Logger
|
||||||
|
// use this iowriter to create a logger to pass it to the http server.
|
||||||
|
hlw.cli.log.Write("", LOG_INFO, string(p))
|
||||||
|
return len(p), nil
|
||||||
|
}
|
||||||
|
|
||||||
func NewClient(ctx context.Context, ctl_addrs []string, logger Logger, ctltlscfg *tls.Config, rpctlscfg *tls.Config) *Client {
|
func NewClient(ctx context.Context, ctl_addrs []string, logger Logger, ctltlscfg *tls.Config, rpctlscfg *tls.Config) *Client {
|
||||||
var c Client
|
var c Client
|
||||||
var i int
|
var i int
|
||||||
|
var hs_log *log.Logger
|
||||||
|
|
||||||
c.ctx, c.ctx_cancel = context.WithCancel(ctx)
|
c.ctx, c.ctx_cancel = context.WithCancel(ctx)
|
||||||
c.ctltlscfg = ctltlscfg
|
c.ctltlscfg = ctltlscfg
|
||||||
@ -996,11 +1009,15 @@ func NewClient(ctx context.Context, ctl_addrs []string, logger Logger, ctltlscfg
|
|||||||
c.ctl_addr = make([]string, len(ctl_addrs))
|
c.ctl_addr = make([]string, len(ctl_addrs))
|
||||||
c.ctl = make([]*http.Server, len(ctl_addrs))
|
c.ctl = make([]*http.Server, len(ctl_addrs))
|
||||||
copy(c.ctl_addr, ctl_addrs)
|
copy(c.ctl_addr, ctl_addrs)
|
||||||
|
|
||||||
|
hs_log = log.New(&client_ctl_log_writer{cli: &c}, "", 0);
|
||||||
|
|
||||||
for i = 0; i < len(ctl_addrs); i++ {
|
for i = 0; i < len(ctl_addrs); i++ {
|
||||||
c.ctl[i] = &http.Server{
|
c.ctl[i] = &http.Server{
|
||||||
Addr: ctl_addrs[i],
|
Addr: ctl_addrs[i],
|
||||||
Handler: c.ctl_mux,
|
Handler: c.ctl_mux,
|
||||||
TLSConfig: c.ctltlscfg,
|
TLSConfig: c.ctltlscfg,
|
||||||
|
ErrorLog: hs_log,
|
||||||
// TODO: more settings
|
// TODO: more settings
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,16 +43,19 @@ type ClientTLSConfig struct {
|
|||||||
type ServerConfig struct {
|
type ServerConfig struct {
|
||||||
CTL struct {
|
CTL struct {
|
||||||
TLS ServerTLSConfig `yaml:"tls"`
|
TLS ServerTLSConfig `yaml:"tls"`
|
||||||
|
ServiceAddrs []string `yaml:"service-addrs"`
|
||||||
} `yaml:"ctl"`
|
} `yaml:"ctl"`
|
||||||
|
|
||||||
RPC struct {
|
RPC struct {
|
||||||
TLS ServerTLSConfig `yaml:"tls"`
|
TLS ServerTLSConfig `yaml:"tls"`
|
||||||
|
ServiceAddrs []string `yaml:"service-addrs"`
|
||||||
} `yaml:"rpc"`
|
} `yaml:"rpc"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ClientConfig struct {
|
type ClientConfig struct {
|
||||||
CTL struct {
|
CTL struct {
|
||||||
TLS ServerTLSConfig `yaml:"tls"`
|
TLS ServerTLSConfig `yaml:"tls"`
|
||||||
|
ServiceAddrs []string `yaml:"service-addrs"`
|
||||||
} `yaml:"ctl"`
|
} `yaml:"ctl"`
|
||||||
RPC struct {
|
RPC struct {
|
||||||
TLS ClientTLSConfig `yaml:"tls"`
|
TLS ClientTLSConfig `yaml:"tls"`
|
||||||
|
@ -251,7 +251,7 @@ func main() {
|
|||||||
goto wrong_usage
|
goto wrong_usage
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(rpc_addrs) < 1 || flgs.NArg() > 0 {
|
if len(rpc_addrs) <= 0 || flgs.NArg() > 0 {
|
||||||
goto wrong_usage
|
goto wrong_usage
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -263,6 +263,8 @@ func main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(ctl_addrs) <= 0 { ctl_addrs = cfg.CTL.ServiceAddrs }
|
||||||
|
|
||||||
err = server_main(ctl_addrs, rpc_addrs, cfg)
|
err = server_main(ctl_addrs, rpc_addrs, cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Fprintf(os.Stderr, "ERROR: server error - %s\n", err.Error())
|
fmt.Fprintf(os.Stderr, "ERROR: server error - %s\n", err.Error())
|
||||||
@ -297,7 +299,7 @@ func main() {
|
|||||||
goto wrong_usage
|
goto wrong_usage
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(rpc_addrs) < 1 {
|
if len(rpc_addrs) <= 0 {
|
||||||
goto wrong_usage
|
goto wrong_usage
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -309,6 +311,8 @@ func main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(ctl_addrs) < 1 { ctl_addrs = cfg.CTL.ServiceAddrs }
|
||||||
|
|
||||||
err = client_main(ctl_addrs, rpc_addrs[0], flgs.Args(), cfg)
|
err = client_main(ctl_addrs, rpc_addrs[0], flgs.Args(), cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Fprintf(os.Stderr, "ERROR: client error - %s\n", err.Error())
|
fmt.Fprintf(os.Stderr, "ERROR: client error - %s\n", err.Error())
|
||||||
|
1
hodu.go
1
hodu.go
@ -24,3 +24,4 @@ type Service interface {
|
|||||||
WaitForTermination() // blocking. must wait until all services are stopped
|
WaitForTermination() // blocking. must wait until all services are stopped
|
||||||
WriteLog(id string, level LogLevel, fmtstr string, args ...interface{})
|
WriteLog(id string, level LogLevel, fmtstr string, args ...interface{})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
17
server.go
17
server.go
@ -5,6 +5,7 @@ import "crypto/tls"
|
|||||||
import "errors"
|
import "errors"
|
||||||
import "fmt"
|
import "fmt"
|
||||||
import "io"
|
import "io"
|
||||||
|
import "log"
|
||||||
import "math/rand"
|
import "math/rand"
|
||||||
import "net"
|
import "net"
|
||||||
import "net/http"
|
import "net/http"
|
||||||
@ -794,6 +795,18 @@ func unaryInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServ
|
|||||||
return v, err
|
return v, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
type server_ctl_log_writer struct {
|
||||||
|
svr *Server
|
||||||
|
}
|
||||||
|
|
||||||
|
func (hlw *server_ctl_log_writer) Write(p []byte) (n int, err error) {
|
||||||
|
// the standard http.Server always requires *log.Logger
|
||||||
|
// use this iowriter to create a logger to pass it to the http server.
|
||||||
|
hlw.svr.log.Write("", LOG_INFO, string(p))
|
||||||
|
return len(p), nil
|
||||||
|
}
|
||||||
|
|
||||||
func NewServer(ctx context.Context, ctl_addrs []string, rpc_addrs []string, logger Logger, ctltlscfg *tls.Config, rpctlscfg *tls.Config) (*Server, error) {
|
func NewServer(ctx context.Context, ctl_addrs []string, rpc_addrs []string, logger Logger, ctltlscfg *tls.Config, rpctlscfg *tls.Config) (*Server, error) {
|
||||||
var s Server
|
var s Server
|
||||||
var l *net.TCPListener
|
var l *net.TCPListener
|
||||||
@ -803,6 +816,7 @@ func NewServer(ctx context.Context, ctl_addrs []string, rpc_addrs []string, logg
|
|||||||
var gl *net.TCPListener
|
var gl *net.TCPListener
|
||||||
var i int
|
var i int
|
||||||
var cwd string
|
var cwd string
|
||||||
|
var hs_log *log.Logger
|
||||||
|
|
||||||
if len(rpc_addrs) <= 0 {
|
if len(rpc_addrs) <= 0 {
|
||||||
return nil, fmt.Errorf("no server addresses provided")
|
return nil, fmt.Errorf("no server addresses provided")
|
||||||
@ -871,11 +885,14 @@ func NewServer(ctx context.Context, ctl_addrs []string, rpc_addrs []string, logg
|
|||||||
s.ctl_addr = make([]string, len(ctl_addrs))
|
s.ctl_addr = make([]string, len(ctl_addrs))
|
||||||
s.ctl = make([]*http.Server, len(ctl_addrs))
|
s.ctl = make([]*http.Server, len(ctl_addrs))
|
||||||
copy(s.ctl_addr, ctl_addrs)
|
copy(s.ctl_addr, ctl_addrs)
|
||||||
|
hs_log = log.New(&server_ctl_log_writer{svr: &s}, "", 0);
|
||||||
|
|
||||||
for i = 0; i < len(ctl_addrs); i++ {
|
for i = 0; i < len(ctl_addrs); i++ {
|
||||||
s.ctl[i] = &http.Server{
|
s.ctl[i] = &http.Server{
|
||||||
Addr: ctl_addrs[i],
|
Addr: ctl_addrs[i],
|
||||||
Handler: s.ctl_mux,
|
Handler: s.ctl_mux,
|
||||||
TLSConfig: s.ctltlscfg,
|
TLSConfig: s.ctltlscfg,
|
||||||
|
ErrorLog: hs_log,
|
||||||
// TODO: more settings
|
// TODO: more settings
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user