diff options
author | Brian Picciano <mediocregopher@gmail.com> | 2021-08-29 21:34:02 -0600 |
---|---|---|
committer | Brian Picciano <mediocregopher@gmail.com> | 2021-08-29 21:34:02 -0600 |
commit | 1608ca742584e83453b0ef52aa0e71661eb15666 (patch) | |
tree | cb86e60140548678b919f07bb06367d817218a41 /srv | |
parent | bf40fa3868dc40c94e649df22179428061039b9a (diff) |
better logging in srv when fake Mailer is used
Diffstat (limited to 'srv')
-rw-r--r-- | srv/cmd/mediocre-blog/main.go | 4 | ||||
-rw-r--r-- | srv/mailinglist/mailer.go | 20 |
2 files changed, 22 insertions, 2 deletions
diff --git a/srv/cmd/mediocre-blog/main.go b/srv/cmd/mediocre-blog/main.go index 7d3f722..5d0d790 100644 --- a/srv/cmd/mediocre-blog/main.go +++ b/srv/cmd/mediocre-blog/main.go @@ -74,8 +74,8 @@ func main() { var mailer mailinglist.Mailer if mailerParams.SMTPAddr == "" { - logger.Info(ctx, "-smtp-addr not given, using NullMailer") - mailer = mailinglist.NullMailer + logger.Info(ctx, "-smtp-addr not given, using a fake Mailer") + mailer = mailinglist.NewLogMailer(logger.WithNamespace("fake-mailer")) } else { mailer = mailinglist.NewMailer(mailerParams) } diff --git a/srv/mailinglist/mailer.go b/srv/mailinglist/mailer.go index b65ccb8..e58ea17 100644 --- a/srv/mailinglist/mailer.go +++ b/srv/mailinglist/mailer.go @@ -9,6 +9,7 @@ import ( "github.com/emersion/go-smtp" "github.com/mediocregopher/blog.mediocregopher.com/srv/cfg" "github.com/mediocregopher/mediocre-go-lib/v2/mctx" + "github.com/mediocregopher/mediocre-go-lib/v2/mlog" ) // Mailer is used to deliver emails to arbitrary recipients. @@ -16,6 +17,25 @@ type Mailer interface { Send(to, subject, body string) error } +type logMailer struct { + logger *mlog.Logger +} + +// NewLogMailer returns a Mailer instance which will not actually send any +// emails, it will only log to the given Logger when Send is called. +func NewLogMailer(logger *mlog.Logger) Mailer { + return &logMailer{logger: logger} +} + +func (l *logMailer) Send(to, subject, body string) error { + ctx := mctx.Annotate(context.Background(), + "to", to, + "subject", subject, + ) + l.logger.Info(ctx, "would have sent email") + return nil +} + // NullMailer acts as a Mailer but actually just does nothing. var NullMailer = nullMailer{} |