If you have any feature requests, please feel free to create an issue. We're looking forward to communicate with you!
cloudlog provides structured loggging in Go.
We recommend to use cloudlog with GCP, support
- Cloud Logging(Stackdriver Logging) display log level, structured logging, etc...
- Error Reporting
format.
you can use logging features immediately when you only need default log config.
It uses zap internal.
$ go get -u github.com/ishihaya/cloudlog
You can define methods that you only use in Log interface.
package log
import (
"os""sync""github.com/ishihaya/cloudlog"
)
// You can define methods that you only use.typeLoginterface {
Debugf(templatestring, args...interface{})
Infof(templatestring, args...interface{})
Warnf(templatestring, args...interface{})
Errorf(templatestring, args...interface{})
Fatalf(templatestring, args...interface{})
Debugw(msgstring, keysAndValues...interface{})
Infow(msgstring, keysAndValues...interface{})
Warnw(msgstring, keysAndValues...interface{})
Errorw(msgstring, keysAndValues...interface{})
Fatalw(msgstring, keysAndValues...interface{})
}
typelogstruct {
*cloudlog.Logger
}
varsharedInstanceLogvaronce sync.Once// You should call this if you use logger.funcGetInstance() Log {
once.Do(func() {
sharedInstance=new()
})
returnsharedInstance
}
funcnew() Log {
varlogger*cloudlog.Loggervarerrerror// serviceName is displayed in Error Reporting.serviceName:="backend-api"switchos.Getenv("APP_ENV") {
// List runnning environments on cloud, such as GCP.case"production", "staging":
logger, err=cloudlog.NewCloudLogger(
cloudlog.NeedErrorReporting(true),
cloudlog.ServiceName(serviceName),
)
default:
logger, err=cloudlog.NewLocalLogger()
}
iferr!=nil {
panic(err)
}
return&log{logger}
}