From fb16a3fc81bdbb1c26e7a9b90803925ad000dd9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20B=C3=BClow?= Date: Fri, 14 Mar 2025 12:07:44 +0100 Subject: [PATCH] moved from log.Logger to slog.Logger --- smtpd.go | 9 ++++--- smtpd_test.go | 74 +++++++++++++++++++++++++-------------------------- 2 files changed, 42 insertions(+), 41 deletions(-) diff --git a/smtpd.go b/smtpd.go index e60e2a1..d31651f 100644 --- a/smtpd.go +++ b/smtpd.go @@ -6,7 +6,8 @@ import ( "crypto/tls" "errors" "fmt" - "log" + "log/slog" + "log" "net" "strings" "sync" @@ -51,7 +52,7 @@ type Server struct { TLSConfig *tls.Config // Enable STARTTLS support. ForceTLS bool // Force STARTTLS usage. - ProtocolLogger *log.Logger + ProtocolLogger *slog.Logger // mu guards doneChan and makes closing it and listener atomic from // perspective of Serve() @@ -384,7 +385,7 @@ func (session *session) logf(format string, v ...interface{}) { if session.server.ProtocolLogger == nil { return } - session.server.ProtocolLogger.Output(2, fmt.Sprintf( + session.server.ProtocolLogger.Info(fmt.Sprintf( "%s [peer:%s]", fmt.Sprintf(format, v...), session.peer.Addr, @@ -393,7 +394,7 @@ func (session *session) logf(format string, v ...interface{}) { } func (session *session) logError(err error, desc string) { - session.logf("%s: %v ", desc, err) + session.server.ProtocolLogger.Error(desc, "error", err) } func (session *session) extensions() []string { diff --git a/smtpd_test.go b/smtpd_test.go index ad6c251..02e5e4e 100644 --- a/smtpd_test.go +++ b/smtpd_test.go @@ -5,7 +5,7 @@ import ( "crypto/tls" "errors" "fmt" - "log" + "log/slog" "net" "net/smtp" "net/textproto" @@ -158,7 +158,7 @@ func runsslserver(t *testing.T, server *smtpd.Server) (addr string, closer func( func TestSMTP(t *testing.T) { addr, closer := runserver(t, &smtpd.Server{ - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -233,7 +233,7 @@ func TestListenAndServe(t *testing.T) { closer() server := &smtpd.Server{ - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), } go func() { @@ -258,7 +258,7 @@ func TestSTARTTLS(t *testing.T) { addr, closer := runsslserver(t, &smtpd.Server{ Authenticator: func(peer smtpd.Peer, username, password string) error { return nil }, ForceTLS: true, - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -347,7 +347,7 @@ func TestAuthRejection(t *testing.T) { return smtpd.Error{Code: 550, Message: "Denied"} }, ForceTLS: true, - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -371,7 +371,7 @@ func TestAuthNotSupported(t *testing.T) { addr, closer := runsslserver(t, &smtpd.Server{ ForceTLS: true, - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -398,7 +398,7 @@ func TestAuthBypass(t *testing.T) { return smtpd.Error{Code: 550, Message: "Denied"} }, ForceTLS: true, - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -424,7 +424,7 @@ func TestConnectionCheck(t *testing.T) { ConnectionChecker: func(peer smtpd.Peer) error { return smtpd.Error{Code: 552, Message: "Denied"} }, - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -441,7 +441,7 @@ func TestConnectionCheckSimpleError(t *testing.T) { ConnectionChecker: func(peer smtpd.Peer) error { return errors.New("Denied") }, - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -461,7 +461,7 @@ func TestHELOCheck(t *testing.T) { } return smtpd.Error{Code: 552, Message: "Denied"} }, - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -483,7 +483,7 @@ func TestSenderCheck(t *testing.T) { SenderChecker: func(peer smtpd.Peer, addr string) error { return smtpd.Error{Code: 552, Message: "Denied"} }, - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -505,7 +505,7 @@ func TestRecipientCheck(t *testing.T) { RecipientChecker: func(peer smtpd.Peer, addr string) error { return smtpd.Error{Code: 552, Message: "Denied"} }, - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -529,7 +529,7 @@ func TestMaxMessageSize(t *testing.T) { addr, closer := runserver(t, &smtpd.Server{ MaxMessageSize: 5, - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -586,7 +586,7 @@ func TestHandler(t *testing.T) { } return nil }, - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -631,7 +631,7 @@ func TestRejectHandler(t *testing.T) { Handler: func(peer smtpd.Peer, env smtpd.Envelope) error { return smtpd.Error{Code: 550, Message: "Rejected"} }, - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -674,7 +674,7 @@ func TestMaxConnections(t *testing.T) { addr, closer := runserver(t, &smtpd.Server{ MaxConnections: 1, - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -696,7 +696,7 @@ func TestNoMaxConnections(t *testing.T) { addr, closer := runserver(t, &smtpd.Server{ MaxConnections: -1, - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -713,7 +713,7 @@ func TestMaxRecipients(t *testing.T) { addr, closer := runserver(t, &smtpd.Server{ MaxRecipients: 1, - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -744,7 +744,7 @@ func TestMaxRecipients(t *testing.T) { func TestInvalidHelo(t *testing.T) { addr, closer := runserver(t, &smtpd.Server{ - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -763,7 +763,7 @@ func TestInvalidHelo(t *testing.T) { func TestInvalidSender(t *testing.T) { addr, closer := runserver(t, &smtpd.Server{ - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -782,7 +782,7 @@ func TestInvalidSender(t *testing.T) { func TestInvalidRecipient(t *testing.T) { addr, closer := runserver(t, &smtpd.Server{ - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -805,7 +805,7 @@ func TestInvalidRecipient(t *testing.T) { func TestRCPTbeforeMAIL(t *testing.T) { addr, closer := runserver(t, &smtpd.Server{ - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -824,7 +824,7 @@ func TestRCPTbeforeMAIL(t *testing.T) { func TestDATAbeforeRCPT(t *testing.T) { addr, closer := runserver(t, &smtpd.Server{ - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -855,7 +855,7 @@ func TestInterruptedDATA(t *testing.T) { t.Fatal("Accepted DATA despite disconnection") return nil }, - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -893,7 +893,7 @@ func TestTimeoutClose(t *testing.T) { MaxConnections: 1, ReadTimeout: time.Second, WriteTimeout: time.Second, - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -930,7 +930,7 @@ func TestTLSTimeout(t *testing.T) { addr, closer := runsslserver(t, &smtpd.Server{ ReadTimeout: time.Second * 2, WriteTimeout: time.Second * 2, - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -973,7 +973,7 @@ func TestTLSTimeout(t *testing.T) { func TestLongLine(t *testing.T) { addr, closer := runserver(t, &smtpd.Server{ - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -1012,7 +1012,7 @@ func TestXCLIENT(t *testing.T) { } return nil }, - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -1076,7 +1076,7 @@ func TestEnvelopeReceived(t *testing.T) { return nil }, ForceTLS: true, - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -1122,7 +1122,7 @@ func TestEnvelopeReceived(t *testing.T) { func TestHELO(t *testing.T) { addr, closer := runserver(t, &smtpd.Server{ - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -1158,7 +1158,7 @@ func TestLOGINAuth(t *testing.T) { addr, closer := runsslserver(t, &smtpd.Server{ Authenticator: func(peer smtpd.Peer, username, password string) error { return nil }, - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -1213,7 +1213,7 @@ func TestLOGINAuth(t *testing.T) { func TestNullSender(t *testing.T) { addr, closer := runserver(t, &smtpd.Server{ - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -1240,7 +1240,7 @@ func TestNullSender(t *testing.T) { func TestNoBracketsSender(t *testing.T) { addr, closer := runserver(t, &smtpd.Server{ - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -1273,7 +1273,7 @@ func TestErrors(t *testing.T) { server := &smtpd.Server{ Authenticator: func(peer smtpd.Peer, username, password string) error { return nil }, - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), } addr, closer := runserver(t, server) @@ -1356,7 +1356,7 @@ func TestMailformedMAILFROM(t *testing.T) { } return nil }, - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), }) defer closer() @@ -1402,7 +1402,7 @@ func TestTLSListener(t *testing.T) { } return nil }, - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), } go func() { @@ -1440,7 +1440,7 @@ func TestTLSListener(t *testing.T) { func TestShutdown(t *testing.T) { fmt.Println("Starting test") server := &smtpd.Server{ - ProtocolLogger: log.New(os.Stdout, "log: ", log.Lshortfile), + ProtocolLogger: slog.New(slog.NewTextHandler(os.Stdout, nil)), } ln, err := net.Listen("tcp", "127.0.0.1:0")