Programming language: Go
Tags: Logging    

logo alternatives and similar packages

Based on the "Logging" category

Do you think we are missing an alternative of logo or a related project?

Add another 'Logging' Package


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 cover.run 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 github.com/mbndr/logo

After that you can import it.

import "github.com/mbndr/logo"


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

*Note that all licence references and agreements mentioned in the logo README section above are relevant to that project's source code only.