Skip to content

Commit dd1f835

Browse files
committed
update echo logger middleware
1 parent a22742d commit dd1f835

File tree

3 files changed

+58
-62
lines changed

3 files changed

+58
-62
lines changed

README.md

Lines changed: 40 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ import "github.com/vuduongtp/go-logadapter"
3636
## Basic Example
3737
View full example [here](https://github.com/vuduongtp/go-logadapter/blob/main/test/test.go)
3838
### Create new simple logger
39-
**Log with JSON format**
4039
```go
4140
logger := logadapter.NewLogger()
4241
logger.Debug("test")
@@ -46,15 +45,36 @@ logger.Debug("test")
4645
{"level":"debug","msg":"test","time":"2023-03-05 20:47:28.369163"}
4746
```
4847
### Create new logger with config
48+
**Log to file**
49+
```go
50+
logger := logadapter.NewLoggerWithConfig(&logadapter.Config{
51+
LogLevel: logadapter.DebugLevel,
52+
LogFormat: logadapter.JSONFormat,
53+
TimestampFormat: time.RFC3339Nano,
54+
IsUseLogFile: true,
55+
FileConfig: &logadapter.FileConfig{
56+
Filename: "logs",
57+
MaxSize: 50,
58+
MaxBackups: 10,
59+
MaxAge: 30,
60+
IsCompress: false,
61+
IsUseLocalTime: false,
62+
},
63+
})
64+
logger.Debug("test")
65+
```
66+
```
67+
{"level":"info","msg":"Logger instance has been successfully initialized","time":"2023-03-05 20:47:28.369102"}
68+
{"level":"debug","msg":"test","time":"2023-03-05 20:47:28.369163"}
69+
```
4970
**Log with pertty JSON format**
5071
```go
51-
config := &logadapter.Config{
52-
LogLevel: logadapter.DebugLevel,
53-
LogFormat: logadapter.PrettyJSONFormat,
54-
TimestampFormat: time.RFC3339Nano,
55-
IsUseLogFile: false,
56-
}
57-
logger := logadapter.NewLoggerWithConfig(config)
72+
logger := logadapter.NewLoggerWithConfig(&logadapter.Config{
73+
LogLevel: logadapter.DebugLevel,
74+
LogFormat: logadapter.PrettyJSONFormat,
75+
TimestampFormat: time.RFC3339Nano,
76+
IsUseLogFile: false,
77+
})
5878
logger.Debug("test")
5979
```
6080
```
@@ -71,13 +91,12 @@ logger.Debug("test")
7191
```
7292
**Log with text format**
7393
```go
74-
config := &logadapter.Config{
75-
LogLevel: logadapter.DebugLevel,
76-
LogFormat: logadapter.TextFormat,
77-
TimestampFormat: time.RFC3339Nano,
78-
IsUseLogFile: false,
79-
}
80-
logger := logadapter.NewLoggerWithConfig(config)
94+
logger := logadapter.NewLoggerWithConfig(&logadapter.Config{
95+
LogLevel: logadapter.DebugLevel,
96+
LogFormat: logadapter.TextFormat,
97+
TimestampFormat: time.RFC3339Nano,
98+
IsUseLogFile: false,
99+
})
81100
logger.Debug("test")
82101
```
83102
```
@@ -86,42 +105,26 @@ time="2023-03-13T15:12:06.700763+07:00" level=debug msg=test
86105
```
87106
### Set logadapter to gorm logger
88107
```go
89-
config := &logadapter.Config{
90-
LogLevel: logadapter.DebugLevel,
91-
LogFormat: logadapter.JSONFormat,
92-
IsUseLogFile: true,
93-
}
94-
logger := logadapter.NewLoggerWithConfig(config)
95-
96108
// * set log adapter for gorm logging
97109
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
98110
if err != nil {
99-
panic("failed to connect database")
111+
panic("failed to connect database")
100112
}
101-
db.Logger := logadapter.NewGormLogAdapter(logger)
113+
db.Logger = logadapter.NewGormLogAdapter(logadapter.NewLogger())
102114
```
103115
### Set logadapter to Echo
104116
```go
105-
config := &logadapter.Config{
106-
LogLevel: logadapter.DebugLevel,
107-
LogFormat: logadapter.JSONFormat,
108-
IsUseLogFile: true,
109-
}
110-
logger := logadapter.NewLoggerWithConfig(config)
111-
112117
e := echo.New()
113118
// * set log adapter for echo instance
114-
e.Logger = logadapter.NewEchoLogAdapter(logger)
119+
e.Logger = logadapter.NewEchoLogAdapter(logadapter.NewLogger())
115120

116-
// * use log adapter middleware for echo web framework
121+
// * use logger middleware for echo web framework
117122
e.Use(logadapter.NewEchoLoggerMiddleware())
118123

119124
// * log with echo context for log request_id
120125
echoContext := e.AcquireContext() // example echo context, should be replaced with echo.Request().Context()
121126
logadapter.LogWithEchoContext(echoContext, "this is message", logadapter.LogTypeDebug, map[string]interface{}{
122-
"field_name": "this is log field",
123-
}) // log message with extend field
124-
logadapter.LogWithEchoContext(echoContext, "this is message 2", logadapter.LogTypeError) // log message error
125-
logadapter.LogWithEchoContext(echoContext, "this is message 3") // log message debug
127+
"field_name": "this is log field",
128+
})
126129
```
127130
**If you really want to help us, simply Fork the project and apply for Pull Request. Thanks.**

echo_adapter.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,7 @@ func NewEchoLoggerMiddleware() echo.MiddlewareFunc {
285285
// * log json format
286286
latency := stop.Sub(start)
287287
trace := map[string]interface{}{
288+
"time": stop.Format(DefaultTimestampFormat),
288289
"ip": c.RealIP(),
289290
"user_agent": req.UserAgent(),
290291
"host": req.Host,

test/test.go

Lines changed: 17 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55

66
"github.com/labstack/echo/v4"
77
"github.com/vuduongtp/go-logadapter"
8+
"gorm.io/driver/sqlite"
89
"gorm.io/gorm"
910
)
1011

@@ -13,45 +14,36 @@ func main() {
1314
}
1415

1516
func testCreateInstance() {
16-
config := &logadapter.Config{
17+
logger := logadapter.NewLoggerWithConfig(&logadapter.Config{
1718
LogLevel: logadapter.DebugLevel,
1819
LogFormat: logadapter.JSONFormat,
1920
TimestampFormat: time.RFC3339Nano,
2021
IsUseLogFile: true,
21-
}
22-
logger := logadapter.NewLoggerWithConfig(config)
22+
FileConfig: &logadapter.FileConfig{
23+
Filename: "logs",
24+
MaxSize: 50,
25+
MaxBackups: 10,
26+
MaxAge: 30,
27+
IsCompress: false,
28+
IsUseLocalTime: false,
29+
},
30+
})
2331
logger.Debug("test")
2432
}
2533

2634
func testGormAdapter() {
27-
config := &logadapter.Config{
28-
LogLevel: logadapter.DebugLevel,
29-
LogFormat: logadapter.JSONFormat,
30-
IsUseLogFile: true,
31-
}
32-
logger := logadapter.NewLoggerWithConfig(config)
33-
3435
// * set log adapter for gorm logging
35-
gormConfig := new(gorm.Config)
36-
gormConfig.PrepareStmt = true
37-
gormLogAdapter := logadapter.NewGormLogAdapter(logger)
38-
gormLogAdapter.SlowThreshold = time.Second
39-
gormLogAdapter.SourceField = logadapter.DefaultGormSourceField
40-
gormConfig.Logger = gormLogAdapter
41-
36+
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
37+
if err != nil {
38+
panic("failed to connect database")
39+
}
40+
db.Logger = logadapter.NewGormLogAdapter(logadapter.NewLogger())
4241
}
4342

4443
func testEchoAdapter() {
45-
config := &logadapter.Config{
46-
LogLevel: logadapter.DebugLevel,
47-
LogFormat: logadapter.JSONFormat,
48-
IsUseLogFile: true,
49-
}
50-
logger := logadapter.NewLoggerWithConfig(config)
51-
5244
e := echo.New()
5345
// * set log adapter for echo instance
54-
e.Logger = logadapter.NewEchoLogAdapter(logger)
46+
e.Logger = logadapter.NewEchoLogAdapter(logadapter.NewLogger())
5547

5648
// * use log adapter middleware for echo web framework
5749
e.Use(logadapter.NewEchoLoggerMiddleware())

0 commit comments

Comments
 (0)