Skip to content

JonahBraun/dog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dog, console logging in go with style.

Package documentation: https://godoc.org/github.com/JonahBraun/dog

Basic Usage

Import this library and create the log object, configured with the minimum log level to display:

import "github.com/JonahBraun/dog"
var log = dog.NewDog(dog.DEBUG)

Then somewhere in a function:

log.Warn("some warning", ...optionalVarsToDisplay)

Full Example

package main

import "github.com/JonahBraun/dog"

var log = dog.NewDog(dog.DEBUG)

func main() {
	number := 8
	msg := "error message from some library"

	log.Debug("needed for advanced debugging")

	// variable(s) can be appended to any of the log calls
	log.Info("Your number is", number)

	log.Warn("Possibly an issue")

	log.Err("This should't be happening…", msg)

	// Fatal returns os.Exit(int) so that you can easily exit
	log.Fatal("Fatal, must exit")(1)
}

The above code will show:

dog_simple

Note the final line in the screenshot is go run printing a non 0 exit status and not something Dog is printing.

Logging Levels and Customization

Five logging levels are defined: debug, info, warn, err, fatal. A log level is only displayed if it is at or above the level given when creating the dog object. For example, in response to a quiet flag you could only print err and fatal messages:

	dog.NewDog(dog.ERR)

You can customize the appearance of a log level by assigning a new log function with CreateLog(color string, prefix string):

	log.Warn = dog.CreateLog(dog.FgRed, "> ")
	log.Warn("Typical customization")

Color ANSI codes are defined to make this convenient. Because CreateLog just concatenates the color and prefix strings, you can do anything you want:

	log.Warn = dog.CreateLog("", dog.FgRed+">"+dog.TR+" ")
	log.Warn("Even more minimal")

	log.Warn = dog.CreateLog(dog.FgYellow+dog.Reverse, "🐺  ")
	log.Warn("Dawg, this custom fatal log format is rockin the CLI!!1")

dog_custom

Why?

This library was originally written for Wago, a file watcher / build tool, which requires log messages to be easily distinguishable from the application output being monitored.

About

Console logging in go with style.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages