eraspacelog is a structured logger for Go (golang), completely API compatible with the standard library logger.
Go Version 1.16+
go get github.com/erajayatech/go-eraspacelog
- Set the following environment variables:
MODE=<your_application_mode>
- Example :
prod
- Example :
- First you need to import go-eraspacelog package for using eraspacelog, one simplest example likes the follow
package main
import (
"github.com/erajayatech/go-eraspacelog"
)
func main() {
...
eraspacelog.SetupLogger(helper.GetEnv("MODE"))
// your code goes here
}
SetupLogger()
need paramater mode
for determine formater to print into your terminal.
with local mode you'll see nicely color-coded
with development mode you'll see json
- Before implementation logger to every single function on your application, you must set the auth-header and request-header into a middleware.
to set auth-header, just call SetAuthHeaderInfoToContext()
package middleware
import (
"github.com/erajayatech/go-eraspacelog"
)
func (middleware *Middleware) HeaderValidatorMiddleware() gin.HandlerFunc {
return func(context *gin.Context) {
source := context.Request.Header.Get("Source")
eraspacelog.SetAuthHeaderInfoToContext(context, eraspacelog.AuthHeaderInfo{
"source": source,
})
}
}
// your code goes here
to set request-header, just call SetAuthHeaderInfoToContext()
package middleware
import (
"github.com/erajayatech/go-eraspacelog"
"github.com/gin-gonic/gin"
)
func (middleware *Middleware) TraceMiddleware() gin.HandlerFunc {
return func(context *gin.Context) {
var traceID = helper.GenerateUUID()
context.Header("X-Trace-Id", traceID)
context.Set("X-Trace-Id", traceID)
context.Set("traceID", traceID)
eraspacelog.SetRequestHeaderInfoToContext(context, eraspacelog.RequestHeaderInfo{
"request_id": traceID,
"path": fmt.Sprintf("%s %s", context.Request.Method, context.Request.URL.Path),
})
context.Next()
}
}
// your code goes here