Skip to content
Golang logger to different configurable writers.
Branch: master
Clone or download
Latest commit 06195de Oct 20, 2017
Type Name Latest commit message Commit time
Failed to load latest commit information.
.travis.yml init travis Feb 8, 2017
LICENSE Update LICENSE Aug 30, 2017 add backup coverage badge Oct 19, 2017
banner.png add banner Feb 8, 2017
levels.go add level tests Sep 6, 2017
levels_test.go add level tests Sep 6, 2017
logger.go add SetPrefix method Sep 22, 2017
logger_test.go gofmt Sep 22, 2017
receiver.go add SetPrefix method Sep 22, 2017
receiver_test.go add coverage, test impr Sep 6, 2017


A simple logging library for golang.


I wanted to have a logger that is easy configurable with various io.Writers and a simple active and color on / off switch, so I created it.

Build Status Go Report Card Coverage go GoDoc MIT License


A Logger object can hold multiple Receivers. Every Receiver holds an io.Writer object (f.e. os.File, os.Stderr), a Level which is minimal the log level that is logged, a boolean Active which says if the Receiver should log or not, and a boolean Color which prints output colored if turned on. Every Receiver has also its own log format.


First you have to install the package.

go get -u

After that you can import it.

import ""


It's possible to create a simple logger with a io.Writer, the log level and a color boolean as parameter.

// Create a simple cli logger with activated colors which logs everything
log := logo.NewSimpleLogger(os.Stderr, logo.DEBUG, "prefix ", true)


You can create multiple Receivers and add it to a new Logger.

// Receiver for the terminal which logs everything
cliRec := logo.NewReceiver(os.Stderr, "prefix ")
cliRec.Color = true
cliRec.Level = logo.DEBUG

// Helper function to get a os.File with the correct options
logFile, _ := logo.Open("./example/logo.log")

// Receiver for the log file
// This will log with level INFO (default) and have no colors activated
// Also the log format is simpler (f.e. ERRO: Message)
fileRec := logo.NewReceiver(logFile, "prefix ")
fileRec.Format = "%s: %s"

// Create the logger
log := logo.NewLogger(cliRec, fileRec)


If you created you logo.Logger object, there are a few methods you can use to log.

// Methods which write like log.Println()
log.Debug("First debug", " and another string to log")
log.Warn("Warning", " message")
log.Error("Error message")
log.Fatal("Fatal error", " because of something")

// Methods which write like log.Printf()
log.Debugf("Debug value %d", 16)
log.Infof("Listening on port %d", 8080)
log.Warnf("Invalid user %s", user.Name)
log.Errorf("Couldn't load config file: %s", path)
log.Fatalf("Fatal error: %s", err.Error())

// Disable the logger
log.Active = false


There are a few unit tests written for this library. To run them cd into the project directory and run this.

go test -v
You can’t perform that action at this time.