GitHunt
ST

steenzout/go-gol

Asynchronous logger in Go

Logo

License
Build Status

Project Stats
Coverage Status

gol is an easily extensible concurrent logging library.

If you would like to contribute
check CONTRIBUTING.md.

Example

package main

import (
	"fmt"
	"os"

	"github.com/mediaFORGE/gol"
	"github.com/mediaFORGE/gol/formatters"

	field_severity "github.com/mediaFORGE/gol/fields/severity"
	filter_severity "github.com/mediaFORGE/gol/filters/severity"
	logger_simple "github.com/mediaFORGE/gol/loggers/simple"
	manager_simple "github.com/mediaFORGE/gol/managers/simple"
)

// Log holds the application LogManager instance.
var Log gol.LoggerManager

func init() {
	fmt.Println("init():start")
	Log = manager_simple.New()

	f := filter_severity.New(field_severity.Info)
	formatter := formatters.Text{}
	logger := logger_simple.New(f, formatter, os.Stdout)
	Log.Register("main", logger)

	channel := make(chan *gol.LogMessage, 10)
	Log.Run(channel)
	Log.Send(gol.NewInfo("message", "main.Log has been configured"))
	channel <- gol.NewInfo("message", "this message was sent directly to the log manager channel")

	fmt.Println("init():end")
}

func main() {
	fmt.Println("Started application.")
	defer func() {
		Log.Close()
		fmt.Println("Ended application.")
	}()

	// send 10,000 messages
	for i := 0; i < 10000; i++ {
		Log.Send(gol.NewInfo("i", fmt.Sprintf("%d", i)))
	}
	fmt.Println("Ending application...")
}

More examples can be found here.

Languages

Go100.0%

Contributors

Apache License 2.0
Created November 3, 2015
Updated April 7, 2025