Logging package similar to log4j for the Golang.
- Support dynamic log level
- Support customized formatter
- TextFormatter
- JSONFormatter
 
- Support multiple rolling file writers
- FixedSizeFileWriter
- DailyFileWriter
- AlwaysNewFileWriter
 
$ go get github.com/subchen/go-logpackage 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"))
}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,
	}
	//...
)import (
	"github.com/subchen/go-log"
	"github.com/subchen/go-log/formatters"
)
log.Default.Formatter = new(formatters.TextFormatter)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)
}Apache 2.0