Add per-upstream logger
This commit is contained in:
parent
7876ddb9c8
commit
726d7cb54b
17
server.go
17
server.go
@ -12,6 +12,23 @@ type Logger interface {
|
|||||||
Printf(format string, v ...interface{})
|
Printf(format string, v ...interface{})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type prefixLogger struct {
|
||||||
|
logger Logger
|
||||||
|
prefix string
|
||||||
|
}
|
||||||
|
|
||||||
|
var _ Logger = (*prefixLogger)(nil)
|
||||||
|
|
||||||
|
func (l *prefixLogger) Print(v ...interface{}) {
|
||||||
|
v = append([]interface{}{l.prefix}, v...)
|
||||||
|
l.logger.Print(v...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *prefixLogger) Printf(format string, v ...interface{}) {
|
||||||
|
v = append([]interface{}{l.prefix}, v...)
|
||||||
|
l.logger.Printf("%v"+format, v...)
|
||||||
|
}
|
||||||
|
|
||||||
type Upstream struct {
|
type Upstream struct {
|
||||||
Addr string
|
Addr string
|
||||||
Nick string
|
Nick string
|
||||||
|
15
upstream.go
15
upstream.go
@ -23,6 +23,7 @@ type upstreamChannel struct {
|
|||||||
|
|
||||||
type upstreamConn struct {
|
type upstreamConn struct {
|
||||||
upstream *Upstream
|
upstream *Upstream
|
||||||
|
logger Logger
|
||||||
net net.Conn
|
net net.Conn
|
||||||
irc *irc.Conn
|
irc *irc.Conn
|
||||||
srv *Server
|
srv *Server
|
||||||
@ -62,10 +63,10 @@ func (c *upstreamConn) handleMessage(msg *irc.Message) error {
|
|||||||
}
|
}
|
||||||
return c.modes.Apply(msg.Params[1])
|
return c.modes.Apply(msg.Params[1])
|
||||||
case "NOTICE":
|
case "NOTICE":
|
||||||
c.srv.Logger.Printf("%q: %v", c.upstream.Addr, msg)
|
c.logger.Print(msg)
|
||||||
case irc.RPL_WELCOME:
|
case irc.RPL_WELCOME:
|
||||||
c.registered = true
|
c.registered = true
|
||||||
c.srv.Logger.Printf("Connection to %q registered", c.upstream.Addr)
|
c.logger.Printf("connection registered")
|
||||||
|
|
||||||
for _, ch := range c.upstream.Channels {
|
for _, ch := range c.upstream.Channels {
|
||||||
err := c.irc.WriteMessage(&irc.Message{
|
err := c.irc.WriteMessage(&irc.Message{
|
||||||
@ -91,7 +92,7 @@ func (c *upstreamConn) handleMessage(msg *irc.Message) error {
|
|||||||
return newNeedMoreParamsError(msg.Command)
|
return newNeedMoreParamsError(msg.Command)
|
||||||
}
|
}
|
||||||
for _, ch := range strings.Split(msg.Params[0], ",") {
|
for _, ch := range strings.Split(msg.Params[0], ",") {
|
||||||
c.srv.Logger.Printf("Joined channel %q", ch)
|
c.logger.Printf("joined channel %q", ch)
|
||||||
c.channels[ch] = &upstreamChannel{
|
c.channels[ch] = &upstreamChannel{
|
||||||
Name: ch,
|
Name: ch,
|
||||||
Members: make(map[string]membership),
|
Members: make(map[string]membership),
|
||||||
@ -169,13 +170,14 @@ func (c *upstreamConn) handleMessage(msg *irc.Message) error {
|
|||||||
case irc.RPL_STATSVLINE, irc.RPL_STATSPING, irc.RPL_STATSBLINE, irc.RPL_STATSDLINE:
|
case irc.RPL_STATSVLINE, irc.RPL_STATSPING, irc.RPL_STATSBLINE, irc.RPL_STATSDLINE:
|
||||||
// Ignore
|
// Ignore
|
||||||
default:
|
default:
|
||||||
c.srv.Logger.Printf("Unhandled upstream message: %v", msg)
|
c.logger.Printf("unhandled upstream message: %v", msg)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func connect(s *Server, upstream *Upstream) error {
|
func connect(s *Server, upstream *Upstream) error {
|
||||||
s.Logger.Printf("Connecting to %v", upstream.Addr)
|
logger := &prefixLogger{s.Logger, fmt.Sprintf("upstream %q: ", upstream.Addr)}
|
||||||
|
logger.Printf("connecting to server")
|
||||||
|
|
||||||
netConn, err := tls.Dial("tcp", upstream.Addr, nil)
|
netConn, err := tls.Dial("tcp", upstream.Addr, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -184,6 +186,7 @@ func connect(s *Server, upstream *Upstream) error {
|
|||||||
|
|
||||||
c := upstreamConn{
|
c := upstreamConn{
|
||||||
upstream: upstream,
|
upstream: upstream,
|
||||||
|
logger: logger,
|
||||||
net: netConn,
|
net: netConn,
|
||||||
irc: irc.NewConn(netConn),
|
irc: irc.NewConn(netConn),
|
||||||
srv: s,
|
srv: s,
|
||||||
@ -216,7 +219,7 @@ func connect(s *Server, upstream *Upstream) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if err := c.handleMessage(msg); err != nil {
|
if err := c.handleMessage(msg); err != nil {
|
||||||
c.srv.Logger.Printf("Failed to handle message %q from %q: %v", msg, upstream.Addr, err)
|
c.logger.Printf("failed to handle message %q: %v", msg, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user