use zerolog logger for gin server
This commit is contained in:
		
							parent
							
								
									c6ac480ad7
								
							
						
					
					
						commit
						4e06072d96
					
				
					 3 changed files with 45 additions and 2 deletions
				
			
		
							
								
								
									
										40
									
								
								server/logger.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								server/logger.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,40 @@ | |||
| package server | ||||
| 
 | ||||
| import ( | ||||
| 	"git.sr.ht/~cco/go-scopes/lib" | ||||
| 	"git.sr.ht/~cco/go-scopes/logging" | ||||
| 	"github.com/gin-gonic/gin" | ||||
| 	"github.com/rs/zerolog" | ||||
| ) | ||||
| 
 | ||||
| func Logger(ctx lib.Context) gin.HandlerFunc { | ||||
| 	return func(c *gin.Context) { | ||||
| 		// before request | ||||
| 		// t := time.Now() | ||||
| 		path := c.Request.URL.Path | ||||
| 		raw := c.Request.URL.RawQuery | ||||
| 		if raw != "" { | ||||
| 			path = path + "?" + raw | ||||
| 		} | ||||
| 		c.Next() | ||||
| 		// after request | ||||
| 		msg := c.Errors.String() | ||||
| 		if msg == "" { | ||||
| 			msg = "request" | ||||
| 		} | ||||
| 		status := c.Writer.Status() | ||||
| 		var evt *zerolog.Event | ||||
| 		switch { | ||||
| 		case status >= 500: | ||||
| 			evt = logging.Error(ctx) | ||||
| 		case status >= 400: | ||||
| 			evt = logging.Warn(ctx) | ||||
| 		default: | ||||
| 			evt = logging.Info(ctx) | ||||
| 		} | ||||
| 		evt.Str("method", c.Request.Method).Str("path", path). | ||||
| 			//	Dur("resp_time", time.Since(t)). | ||||
| 			Int("status", status). | ||||
| 			Str("client_ip", c.ClientIP()).Msg(msg) | ||||
| 	} | ||||
| } | ||||
|  | @ -19,6 +19,7 @@ type ServerState struct { | |||
| } | ||||
| 
 | ||||
| func Start(ctx lib.Context) { | ||||
| 	gin.SetMode(gin.ReleaseMode) | ||||
| 	lib.GetCfg[*Cfg](ctx).BaseCfg.WithDoneHandler(HandleDone) | ||||
| 	Serve(ctx) | ||||
| 	lib.RunCtx(ctx, core.Listen) | ||||
|  | @ -30,7 +31,9 @@ func HandleDone(ctx lib.Context) bool { | |||
| } | ||||
| 
 | ||||
| func Serve(ctx lib.Context) { | ||||
| 	r := gin.Default() | ||||
| 	//r := gin.Default() | ||||
| 	r := gin.New() | ||||
| 	r.Use(Logger(ctx)) | ||||
| 	r.GET("/*action", func(c *gin.Context) { | ||||
| 		c.String(http.StatusOK, "Hello World") | ||||
| 	}) | ||||
|  |  | |||
|  | @ -19,7 +19,7 @@ func TestConfig(tb *tbase.T) { | |||
| 	t.Run("send", SendTest) | ||||
| 	t.Run("client", ClientTest) | ||||
| 	t.TearDownApp() | ||||
| 	t.AssertEqual(t.LogCount(true), 11) | ||||
| 	t.AssertEqual(t.LogCount(true), 12) | ||||
| } | ||||
| 
 | ||||
| func AppTest(t *testing.T) { | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue