Slogger is a logging library for Go.
Slogger supports multiple appenders including an asynchronous appender and a rolling file appender.
Slogger can be installed via go get
:
go get github.com/mongodb/slogger/v2/slogger
At the core of slogger is the Logger type. Here is an example where we create a Logger with a StringAppender.
package main
import (
"github.com/mongodb/slogger/v2/slogger"
"bytes"
"fmt"
)
func main() {
buffer := new(bytes.Buffer)
appender := slogger.StringAppender{buffer}
logger := slogger.Logger{"", []slogger.Appender{appender}, 0, nil}
logger.Logf(slogger.OFF, "Here is a sample log line: %v", 1)
logger.Logf(slogger.OFF, "Here's another one: %v", 2)
fmt.Print(buffer)
}
The above code prints:
[2016/02/25 14:35:10.168] [.off] [proc.c:main:247] Here is a sample log line: 1
[2016/02/25 14:35:10.168] [.off] [proc.c:main:247] Here's another one: 2
Some of slogger's appenders can be composed. For example,
StringAppender
does not respect logging levels, but we can create a
FilterAppender
that does. We can compose them to create an appender
that pays attention to logging levels and outputs to a string.
package main
import (
"github.com/mongodb/slogger/v2/slogger"
"bytes"
"fmt"
)
func main() {
buffer := new(bytes.Buffer)
appender := slogger.LevelFilter(slogger.INFO, slogger.StringAppender{buffer})
logger := slogger.Logger{"", []slogger.Appender{appender}, 0, nil}
logger.Logf(slogger.INFO, "This log line will make it through")
logger.Logf(slogger.DEBUG, "This log line won't")
fmt.Print(buffer)
}
The above code prints:
[2016/02/25 14:41:56.420] [.info] [slogger2.go:main:15] This log line will make it through
Other appenders include an AsyncAppender, a RetainingLevelFilterAppender, and a RollingFileAppender. See the code for details.
- Sign the MongoDB Contributor Agreement.
- Fork the repository.
- Make your changes.
- Ensure that the tests pass by running
./run-tests
. - Submit a pull request.
Slogger is made available under the Apache License version 2.