You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79f8c54150 | 7 years ago | |
---|---|---|
examples | 7 years ago | |
formatters | 7 years ago | |
vendor/golang.org/x | 7 years ago | |
writers | 7 years ago | |
.travis.yml | 7 years ago | |
Gopkg.lock | 7 years ago | |
Gopkg.toml | 7 years ago | |
LICENSE | 8 years ago | |
README.md | 7 years ago | |
formatter.go | 7 years ago | |
level.go | 7 years ago | |
level_test.go | 7 years ago | |
log.go | 7 years ago | |
log_interface.go | 7 years ago | |
logger.go | 7 years ago | |
logger_test.go | 7 years ago |
README.md
go-log
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
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.DEBUG
log.Debug("cannot output debug message")
log.Infoln("can output info message")
}
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