Giter Club home page Giter Club logo

discordrus's Introduction

discordrus | a Discord hook for Logrus :walrus: Travis CI GoDoc

Screenshot of discordrus in action

Install

go get github.com/kz/discordrus

Setup

In order to use this package, a Discord webhook URL is required. Find out how to obtain one here. You will need to be a server administrator to do this.

Usage

Below is an example of how this package may be used. The options below are used only for the purpose of demonstration and chances are that you will not need to use any options at all (or if any, only the Username option).

package main

import (
	"github.com/sirupsen/logrus"
	"os"
	"github.com/kz/discordrus"
)

func init() {
	logrus.SetFormatter(&logrus.TextFormatter{})
	logrus.SetOutput(os.Stderr)
	logrus.SetLevel(logrus.TraceLevel)

	logrus.AddHook(discordrus.NewHook(
		// Use environment variable for security reasons
		os.Getenv("DISCORDRUS_WEBHOOK_URL"),
		// Set minimum level to DebugLevel to receive all log entries
		logrus.TraceLevel,
		&discordrus.Opts{
			Username:           "Test Username",
			Author:             "",                         // Setting this to a non-empty string adds the author text to the message header
			DisableTimestamp:   false,                      // Setting this to true will disable timestamps from appearing in the footer
			TimestampFormat:    "Jan 2 15:04:05.00000 MST", // The timestamp takes this format; if it is unset, it will take logrus' default format
			TimestampLocale:    nil,                        // The timestamp uses this locale; if it is unset, it will use time.Local
			EnableCustomColors: true,                       // If set to true, the below CustomLevelColors will apply
			CustomLevelColors: &discordrus.LevelColors{
				Trace: 3092790,
				Debug: 10170623,
				Info:  3581519,
				Warn:  14327864,
				Error: 13631488,
				Panic: 13631488,
				Fatal: 13631488,
			},
			DisableInlineFields: false, // If set to true, fields will not appear in columns ("inline")
		},
	))
}

func main() {
	logrus.WithFields(logrus.Fields{"String": "hi", "Integer": 2, "Boolean": false}).Debug("Check this out! Awesome, right?")
}

All discordrus.Opts fields are optional.

Option Description Default Valid options
Username Replaces the default username of the webhook bot for the sent message only Username unchanged Any non-empty string (2-32 chars. inclusive)
Author Adds an author field to the header if set Author not set Any non-empty string (1-256 chars inclusive)
DisableInlineFields Inline means whether Discord will display the field in a column (with maximum three columns to a row). Setting this to true will cause Discord to display the field in its own row. false bool
DisableTimestamp Specifies whether the timestamp in the footer should be disabled false bool
TimestampFormat Change the timestamp format logrus's default time format "Jan 2 15:04:05.00000 MST", or any format accepted by Golang
TimestampLocale Change the timestamp locale nil nil == time.Local, time.UTC, time.LoadLocation("America/New_York"), etc
EnableCustomColors Specifies whether the CustomLevelColors opt value should be used instead of discordrus.DefaultLevelColors. If true, CustomLevelColors must be specified (or all colors will be set to the nil value of 0, therefore displayed as white) false bool
CustomLevelColors Replaces discordrus.DefaultLevelColors. All fields must be entered or they will default to the nil value of 0. Pointer to struct instance of discordrus.LevelColors

In addition to the above character count constraints, Discord has a maximum of 25 fields with their name and value limits being 256 and 1024 respectively. Furthermore, the description (i.e., logrus' error message) must be a maximum of 2048. All of these constraints, including the option constraints above, will automatically be truncated with no further action required.

Contributing

Contributions are valued and welcome! Please feel free to open an issue or make a pull request.

Acknowledgements

The following repositories have been helpful in creating this package: puddingfactory/logentrus for Logentries, johntdyer/slackrus for Slack and nubo/hiprus for Hipchat. Check them out!

discordrus's People

Contributors

ewohltman avatar kz avatar tsuz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

discordrus's Issues

New Trace log level in logrus

Hello, I'm just opening this issue to let you know, the next release of logrus (v1.2.0) will add a new trace level named Trace below Debug.
Here is the PR for reference sirupsen/logrus#844
You may want to take into account this new level.

Question about usage

Hey there,
This is definitely something I will be using, looks great. I was wondering if it also had the ability to take all standard console logs generated by Discordgo and output them through logrus as well? I am not to the point of setting up much within discord itself yet, I would really like to have all current logs go through logrus though.

Thanks,
-MH

Fatal color returns warn color

When I set the fatal color, it seems to use warn color.

func init() {
...
EnableCustomColors: true,      
CustomLevelColors: &discordrus.LevelColors{
	Debug: 10170623,
	Info:  3581519,
	Warn:  14913035,
	Error: 12651008,
	Panic: 12651008,
	Fatal: 12651008,
},
...
}

func main() {
	log.Error("Hi")
	log.Fatal("Hi")
}

0030-05-10 10 46 26

It seems like this code is causing the issue.

Is this currently being worked on? If not, I can make a PR.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.