go-log ================ Logging package similar to log4j for the Golang. - Support dynamic log level - Support customized formatter - TextFormatter - JSONFormatter - Support multiple rolling file log - FixedSizeFileWriter - DailyFileWriter - AlwaysNewFileWriter Installation --------------- ```bash $ go get github.com/fangdingjun/go-log ``` Usage --------------- ```go package main import ( "os" "errors" "github.com/fangdingjun/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. ```go import ( "github.com/fangdingjun/go-log" "github.com/fangdingjun/go-log/log" ) log.Default.Out = &log.FixedSizeFileWriter{ Name: "/tmp/test.log", MaxSize: 10 * 1024 * 1024, // 10m MaxCount: 10, }) ``` Three builtin log for use ```go // Create log file if file size large than fixed size (10m) // files: /tmp/test.log.0 .. test.log.10 &log.FixedSizeFileWriter{ Name: "/tmp/test.log", MaxSize: 10 * 1024 * 1024, // 10m MaxCount: 10, } // Create log file every day. // files: /tmp/test.log.20160102 &log.DailyFileWriter{ Name: "/tmp/test.log", MaxCount: 10, } // Create log file every process. // files: /tmp/test.log.20160102_150405 &log.AlwaysNewFileWriter{ Name: "/tmp/test.log", MaxCount: 10, } // Output to multiple writes io.MultiWriter( os.Stdout, &log.DailyFileWriter{ Name: "/tmp/test.log", MaxCount: 10, } //... ) ``` ### Formatter ```go import ( "github.com/fangdingjun/go-log" ) log.Default.Formatter = new(log.TextFormatter) ``` ### New Logger instance ```go import ( "github.com/fangdingjun/go-log" ) func main() { logger := &log.Logger{ Level: log.INFO, Formatter: new(log.JSONFormatter), Out: os.Stdout, } logger.Infof("i = %d", 99) } ``` ## LICENSE Apache 2.0