Skip to content

mbndr/logo

Repository files navigation

Logo

A simple logging library for golang.

banner

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 StatusGo Report CardCoveragecover.run goGoDocMIT License

Explanation

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.

Initilization

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"

Simple

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 everythinglog:=logo.NewSimpleLogger(os.Stderr, logo.DEBUG, "prefix ", true)

Advanced

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

// Receiver for the terminal which logs everythingcliRec:=logo.NewReceiver(os.Stderr, "prefix ") cliRec.Color=truecliRec.Level=logo.DEBUG// Helper function to get a os.File with the correct optionslogFile, _:=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 loggerlog:=logo.NewLogger(cliRec, fileRec)

Usage

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.Info("Information") 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 loggerlog.Active=false

Tests

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

go test -v 

About

Golang logger to different configurable writers.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages