mirror of
https://github.com/containrrr/watchtower.git
synced 2025-02-07 19:30:19 +02:00
Made the notification level flag global for all notification types.
This commit is contained in:
parent
4ac08dfb30
commit
e1ead2f46f
@ -191,6 +191,10 @@ The types of notifications to send are passed via the comma-separated option `--
|
||||
* `email` to send notifications via e-mail
|
||||
* `slack` to send notifications through a Slack webhook
|
||||
|
||||
### Settings
|
||||
|
||||
* `--notifications-level` (env. `WATCHTOWER_NOTIFICATIONS_LEVEL`): Controls the log level which is used for the notifications. If omitted, the default log level is `info`. Possible values are: `panic`, `fatal`, `error`, `warn`, `info` or `debug`.
|
||||
|
||||
### Notifications via E-Mail
|
||||
|
||||
To receive notifications by email, the following command-line options, or their corresponding environment variables, can be set:
|
||||
|
12
main.go
12
main.go
@ -96,6 +96,12 @@ func main() {
|
||||
Usage: "notification types to send (valid: email, slack)",
|
||||
EnvVar: "WATCHTOWER_NOTIFICATIONS",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "notifications-level",
|
||||
Usage: "The log level used for sending notifications. Possible values: \"panic\", \"fatal\", \"error\", \"warn\", \"info\" or \"debug\"",
|
||||
EnvVar: "WATCHTOWER_NOTIFICATIONS_LEVEL",
|
||||
Value: "info",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "notification-email-from",
|
||||
Usage: "Address to send notification e-mails from",
|
||||
@ -147,12 +153,6 @@ func main() {
|
||||
EnvVar: "WATCHTOWER_NOTIFICATION_SLACK_IDENTIFIER",
|
||||
Value: "watchtower",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "notification-slack-level",
|
||||
Usage: "The log level used for sending notifications through Slack. Default if omitted is \"info\". Possible values: \"panic\",\"fatal\",\"error\",\"warn\",\"info\" or \"debug\"",
|
||||
EnvVar: "WATCHTOWER_NOTIFICATION_SLACK_LEVEL",
|
||||
Value: "info",
|
||||
},
|
||||
}
|
||||
|
||||
if err := app.Run(os.Args); err != nil {
|
||||
|
@ -28,9 +28,10 @@ type emailTypeNotifier struct {
|
||||
Port int
|
||||
tlsSkipVerify bool
|
||||
entries []*log.Entry
|
||||
logLevels []log.Level
|
||||
}
|
||||
|
||||
func newEmailNotifier(c *cli.Context) typeNotifier {
|
||||
func newEmailNotifier(c *cli.Context, acceptedLogLevels []log.Level) typeNotifier {
|
||||
n := &emailTypeNotifier{
|
||||
From: c.GlobalString("notification-email-from"),
|
||||
To: c.GlobalString("notification-email-to"),
|
||||
@ -39,6 +40,7 @@ func newEmailNotifier(c *cli.Context) typeNotifier {
|
||||
Password: c.GlobalString("notification-email-server-password"),
|
||||
Port: c.GlobalInt("notification-email-server-port"),
|
||||
tlsSkipVerify: c.GlobalBool("notification-email-server-tls-skip-verify"),
|
||||
logLevels: acceptedLogLevels,
|
||||
}
|
||||
|
||||
log.AddHook(n)
|
||||
@ -112,14 +114,7 @@ func (e *emailTypeNotifier) SendNotification() {
|
||||
}
|
||||
|
||||
func (e *emailTypeNotifier) Levels() []log.Level {
|
||||
// TODO: Make this configurable.
|
||||
return []log.Level{
|
||||
log.PanicLevel,
|
||||
log.FatalLevel,
|
||||
log.ErrorLevel,
|
||||
log.WarnLevel,
|
||||
log.InfoLevel,
|
||||
}
|
||||
return e.logLevels
|
||||
}
|
||||
|
||||
func (e *emailTypeNotifier) Fire(entry *log.Entry) error {
|
||||
|
@ -1,6 +1,7 @@
|
||||
package notifications
|
||||
|
||||
import (
|
||||
"github.com/johntdyer/slackrus"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"github.com/urfave/cli"
|
||||
)
|
||||
@ -19,15 +20,22 @@ type Notifier struct {
|
||||
func NewNotifier(c *cli.Context) *Notifier {
|
||||
n := &Notifier{}
|
||||
|
||||
logLevel, err := log.ParseLevel(c.GlobalString("notifications-level"))
|
||||
if err != nil {
|
||||
log.Fatalf("Notifications invalid log level: %s", err.Error())
|
||||
}
|
||||
|
||||
acceptedLogLevels := slackrus.LevelThreshold(logLevel)
|
||||
|
||||
// Parse types and create notifiers.
|
||||
types := c.GlobalStringSlice("notifications")
|
||||
for _, t := range types {
|
||||
var tn typeNotifier
|
||||
switch t {
|
||||
case emailType:
|
||||
tn = newEmailNotifier(c)
|
||||
tn = newEmailNotifier(c, acceptedLogLevels)
|
||||
case slackType:
|
||||
tn = newSlackNotifier(c)
|
||||
tn = newSlackNotifier(c, acceptedLogLevels)
|
||||
default:
|
||||
log.Fatalf("Unknown notification type %q", t)
|
||||
}
|
||||
|
@ -14,17 +14,12 @@ type slackTypeNotifier struct {
|
||||
slackrus.SlackrusHook
|
||||
}
|
||||
|
||||
func newSlackNotifier(c *cli.Context) typeNotifier {
|
||||
logLevel, err := log.ParseLevel(c.GlobalString("notification-slack-level"))
|
||||
if err != nil {
|
||||
log.Fatalf("Slack notifications: %s", err.Error())
|
||||
}
|
||||
|
||||
func newSlackNotifier(c *cli.Context, acceptedLogLevels []log.Level) typeNotifier {
|
||||
n := &slackTypeNotifier{
|
||||
SlackrusHook: slackrus.SlackrusHook{
|
||||
HookURL: c.GlobalString("notification-slack-hook-url"),
|
||||
Username: c.GlobalString("notification-slack-identifier"),
|
||||
AcceptedLevels: slackrus.LevelThreshold(logLevel),
|
||||
AcceptedLevels: acceptedLogLevels,
|
||||
},
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user