/slclogger

Simple and Human Friendly Slack Client for Logging Written in Go Programming Language

Primary LanguageGoMIT LicenseMIT

SlcLogger

Build Status

Simple and Human Friendly Slack Client for Logging/Notification written in Go

Install

go get "github.com/iktakahiro/slclogger/v2"

How to Use

Basic Usage

package main

import (
	"errors"

	"github.com/iktakahiro/slclogger/v2"
)

func something() error {
	return errors.New("an error has occurred")
}

func main() {

	logger, _ := slclogger.NewSlcLogger(&slclogger.LoggerParams{
		WebHookURL: "https://hooks.slack.com/services/YOUR_WEBHOOK_URL",
	})

	if err := something(); err != nil {
		logger.Error(err, "Error Notification")
	}
}

When you execute the above sample code, your Slack channel will receive the message.

Log Levels

The default log level is Info. You can set it when initializing a SlcLogger struct.

package main

import (
	"github.com/iktakahiro/slclogger/v2"
)

func main() {
    logger, _ := slclogger.NewSlcLogger(&slclogger.LoggerParams{
        WebHookURL: "https://hooks.slack.com/services/YOUR_WEBHOOK_URL",
        LogLevel: slclogger.LevelDebug,
    })

    logger.Debug("Debug Message")
    logger.Info("Info Message")
    logger.Warn("Warn Message")
    logger.Error("Error Message")
}

You can also change the level at any time.

package main

import (
	"github.com/iktakahiro/slclogger/v2"
)

func main() {
	logger, _ := slclogger.NewSlcLogger(&slclogger.LoggerParams{
		WebHookURL: "https://hooks.slack.com/services/YOUR_WEBHOOK_URL",
	})

    logger.SetLogLevel(slclogger.LevelWarn)

    // The following notification will be ignored.
    logger.Debug("Debug Message")
}

Configure Options

All options are shown below.

package main

import (
	"github.com/iktakahiro/slclogger/v2"
)

func main() {

    logger, err := slclogger.NewSlcLogger(&slclogger.LoggerParams{
        WebHookURL:         "https://hooks.slack.com/services/YOUR_WEBHOOK_URL",
        DefaultTitle:       "Default Title",
        DefaultChannel:     "general",
        DebugChannel:       "debug-channel",
        InfoChannel:        "info-channel",
        WarnChannel :       "warn-channel",
        ErrorChannel :      "error-channel",
        LogLevel:           slclogger.LevelWarn,
        IconURL:            "https://example.com",
        UserName:           "My Logger",
    })
}
Param Default Value
WebHookURL (require) --
DefaultTitle "Notification"
DefaultChannel "" (When this param is omitted, the default channel of specified WebHook is used.)
DebugChannel "" (When this param is omitted, the value of DefaultChannel is used.)
InfoChannel "" (When this param is omitted, the value of DefaultChannel is used.)
WarnChannel "" (When this param is omitted, the value of DefaultChannel is used.)
ErrorChannel "" (When this param is omitted, the value of DefaultChannel is used.)
LogLevel Info
IconURL ""
UseName ""

Error Handling

If you want to handle errors, use SlcErr.

if err := logger.Info("info message"); err != nil {
    if slcErr, ok := err.(*slclogger.SlcErr); ok {
        fmt.Println(slcErr)
        fmt.Println(slcErr.Code)
    }
}

Test

make test

Documents