Skip to content

Commit ec81efd

Browse files
authored
Merge pull request #1 from lauren-rmtech/feature/add-user-agent
Add user agent to zlog
2 parents 07776c8 + f8339f4 commit ec81efd

File tree

2 files changed

+47
-3
lines changed

2 files changed

+47
-3
lines changed

zlog/zlog.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,18 @@ func Logger(lvl zerolog.Level) gin.HandlerFunc {
3939
c.Header("X-Request-ID", requestID)
4040

4141
// Create a sublogger at the specified level to carry through the request chain
42-
logger := log.With().Str("id", requestID).Logger().Level(lvl)
42+
logger := log.With().
43+
Str("id", requestID).
44+
Str("agent", c.GetHeader("User-Agent")).
45+
Str("path", c.Request.URL.Path).
46+
Logger().
47+
Level(lvl)
4348
setLogger(c, &logger)
4449

4550
// Log request start
4651
logger.WithLevel(globalRequestLevel).
4752
Str("method", c.Request.Method).
4853
Str("origin", c.GetHeader("Origin")).
49-
Str("path", c.Request.URL.Path).
5054
Str("ip", c.ClientIP()).
5155
Msg(fmt.Sprintf("REQ %s %s %s", c.Request.Method, c.Request.URL.Path, c.ClientIP()))
5256

@@ -59,7 +63,6 @@ func Logger(lvl zerolog.Level) gin.HandlerFunc {
5963
// Log response
6064
GetLogger(c).WithLevel(globalResponseLevel).
6165
Str("method", c.Request.Method).
62-
Str("request", c.Request.URL.Path).
6366
Str("ip", c.ClientIP()).
6467
Int("response", c.Writer.Status()).
6568
Int("bytes", c.Writer.Size()).

zlog/zlog_test.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,10 @@ func TestLogRequest(t *testing.T) {
4141
assert.Equal(t, 3, len(lines))
4242
assert.Contains(t, lines[0], "TRC REQ GET /")
4343
assert.Contains(t, lines[0], id)
44+
assert.Contains(t, lines[0], "path=/")
4445
assert.Contains(t, lines[1], "DBG RES GET /")
4546
assert.Contains(t, lines[1], id)
47+
assert.Contains(t, lines[0], "path=/")
4648
}
4749

4850
func TestLogExtra(t *testing.T) {
@@ -72,6 +74,7 @@ func TestLogExtra(t *testing.T) {
7274
assert.Equal(t, 2, len(lines))
7375
assert.Contains(t, lines[0], "WRN TEST")
7476
assert.Contains(t, lines[0], id)
77+
assert.Contains(t, lines[0], "path=/")
7578
}
7679

7780
func TestLogChangeRequestLevel(t *testing.T) {
@@ -104,3 +107,41 @@ func TestLogChangeRequestLevel(t *testing.T) {
104107
assert.Contains(t, lines[1], "DBG RES GET /")
105108
assert.Contains(t, lines[1], id)
106109
}
110+
111+
func TestLogAgent(t *testing.T) {
112+
gin.SetMode(gin.ReleaseMode)
113+
zerolog.SetGlobalLevel(zerolog.TraceLevel)
114+
115+
buf := &bytes.Buffer{}
116+
log.Logger = zerolog.New(buf).With().Timestamp().Logger().
117+
Output(zerolog.ConsoleWriter{Out: buf, TimeFormat: time.RFC3339, NoColor: true})
118+
119+
w := httptest.NewRecorder()
120+
e := gin.New()
121+
122+
e.GET("", Logger(zerolog.TraceLevel), func(ctx *gin.Context) {
123+
GetLogger(ctx).Warn().Msg("TEST")
124+
})
125+
126+
req, _ := http.NewRequest("GET", "/", nil)
127+
req.Header.Set("Origin", "http://localhost:8080")
128+
req.Header.Set("User-Agent", "test-agent")
129+
e.ServeHTTP(w, req)
130+
131+
fmt.Println(buf)
132+
lines := strings.Split(buf.String(), "\n")
133+
id := w.Header().Get("X-Request-ID")
134+
135+
assert.NotEmpty(t, id)
136+
137+
assert.Equal(t, 4, len(lines))
138+
assert.Contains(t, lines[0], "TRC REQ GET /")
139+
assert.Contains(t, lines[0], id)
140+
assert.Contains(t, lines[0], "agent=test-agent")
141+
assert.Contains(t, lines[1], "WRN TEST")
142+
assert.Contains(t, lines[1], id)
143+
assert.Contains(t, lines[1], "agent=test-agent")
144+
assert.Contains(t, lines[2], "DBG RES GET /")
145+
assert.Contains(t, lines[2], id)
146+
assert.Contains(t, lines[2], "agent=test-agent")
147+
}

0 commit comments

Comments
 (0)