GitHub - subchen/go-log: Simple and configurable Logging in Go, with level, formatters and writers (original) (raw)

go-log

GoDoc Build Status Coverage Status Go Report Card License

Logging package similar to log4j for the Golang.

Installation

$ go get github.com/subchen/go-log

Usage

package main

import ( "os" "errors" "github.com/subchen/go-log" )

func main() { log.Debugf("app = %s", os.Args[0]) log.Errorf("error = %v", errors.New("some error"))

// dynamic set level
log.Default.Level = log.WARN

log.Debug("cannot output debug message")
log.Errorln("can output error message", errors.New("some error"))

}

Output

Default log to console, you can set Logger.Out to set a file writer into log.

import ( "github.com/subchen/go-log" "github.com/subchen/go-log/writers" )

log.Default.Out = &writers.FixedSizeFileWriter{ Name: "/tmp/test.log", MaxSize: 10 * 1024 * 1024, // 10m MaxCount: 10, })

Three builtin writers for use

// Create log file if file size large than fixed size (10m) // files: /tmp/test.log.0 .. test.log.10 &writers.FixedSizeFileWriter{ Name: "/tmp/test.log", MaxSize: 10 * 1024 * 1024, // 10m MaxCount: 10, }

// Create log file every day. // files: /tmp/test.log.20160102 &writers.DailyFileWriter{ Name: "/tmp/test.log", MaxCount: 10, }

// Create log file every process. // files: /tmp/test.log.20160102_150405 &writers.AlwaysNewFileWriter{ Name: "/tmp/test.log", MaxCount: 10, }

// Output to multiple writes io.MultiWriter( os.Stdout, &writers.DailyFileWriter{ Name: "/tmp/test.log", MaxCount: 10, } //... )

Formatter

import ( "github.com/subchen/go-log" "github.com/subchen/go-log/formatters" )

log.Default.Formatter = new(formatters.TextFormatter)

New Logger instance

import ( "github.com/subchen/go-log" )

func main() { logger := &log.Logger{ Level: log.INFO, Formatter: new(formatters.JSONFormatter), Out: os.Stdout, }

logger.Infof("i = %d", 99)

}

LICENSE

Apache 2.0