Avatar
0
tvd12 Enlightened
tvd12 Enlightened
[Go]Send error log to slack
Mọi người hiện đang dùng thư viện nào để bắn error log đến slack nhỉ?
  • Answer
go log slack
Remain: 5
1 Answer
Avatar
ducnt114 Enlightened
ducnt114 Enlightened
The Best Answer
Thử dùng adapter này nhé

package slackbot

import (
   "fmt"
   "github.com/nlopes/slack"
)

const (
   Green string = "#00ff00"
   Red   string = "#ff0000"
)
type SlackBot interface {
	PushSuccessMsg(args ...interface{}) error
	PushErrorMsg(args ...interface{}) error
}

type slackAPI struct {
	WebHookURL string
}

func NewSlackBot(webHookURL string) SlackBot {
	return &slackAPI{WebHookURL: webHookURL}
}

// args[0] author, args[1] success msg, args[2] footer
func (s *slackAPI) PushSuccessMsg(args ...interface{}) error {
	slackMsg := &slack.WebhookMessage{
		Attachments: []slack.Attachment{
			{
				Color: Green,
				AuthorName: getStringArgs(args, 0),
				Text: getStringArgs(args, 1),
				Footer: getStringArgs(args, 2),
			},
		},
	}
	return slack.PostWebhook(s.WebHookURL, slackMsg)
}

// args[0] author, args[1] error msg, args[2] footer
func (s *slackAPI) PushErrorMsg(args ...interface{}) error {
	slackMsg := &slack.WebhookMessage{
		Attachments: []slack.Attachment{
			{
				Color: Red,
				AuthorName: getStringArgs(args, 0),
				Text: getStringArgs(args, 1),
				Footer: getStringArgs(args, 2),
			},
		},
	}
	return slack.PostWebhook(s.WebHookURL, slackMsg)
}

func getStringArgs(args []interface{}, index int) string {
	if index >= len(args) {
		return ""
	}
	return fmt.Sprint(args[index])
}
  • 1
  • Reply