Skip to content

Commit f27de9a

Browse files
committed
Fixed logging
Signed-off-by: Vishal Rana <[email protected]>
1 parent f405794 commit f27de9a

File tree

12 files changed

+64
-203
lines changed

12 files changed

+64
-203
lines changed

context.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
"time"
99

1010
"github.com/labstack/echo/engine"
11-
"github.com/labstack/gommon/log"
11+
"github.com/labstack/echo/logger"
1212

1313
"net/url"
1414

@@ -46,7 +46,7 @@ type (
4646
NoContent(int) error
4747
Redirect(int, string) error
4848
Error(err error)
49-
Logger() *log.Logger
49+
Logger() logger.Logger
5050
Context() *context
5151
}
5252

@@ -303,7 +303,7 @@ func (c *context) Error(err error) {
303303
}
304304

305305
// Logger returns the `Logger` instance.
306-
func (c *context) Logger() *log.Logger {
306+
func (c *context) Logger() logger.Logger {
307307
return c.echo.logger
308308
}
309309

@@ -314,8 +314,6 @@ func (c *context) Context() *context {
314314

315315
func (c *context) reset(req engine.Request, res engine.Response, e *Echo) {
316316
c.request = req
317-
// TODO: v2
318-
// c.response.reset(res, e)
319317
c.response = res
320318
c.query = nil
321319
c.store = nil

echo.go

Lines changed: 9 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@ import (
1313
"runtime"
1414
"strings"
1515
"sync"
16-
"time"
1716

1817
"encoding/xml"
1918

2019
"github.com/labstack/echo/engine"
2120
"github.com/labstack/echo/engine/fasthttp"
2221
"github.com/labstack/echo/engine/standard"
22+
"github.com/labstack/echo/logger"
2323
"github.com/labstack/gommon/log"
2424
)
2525

@@ -41,7 +41,7 @@ type (
4141
engineType engine.Type
4242
engine engine.Engine
4343
router *Router
44-
logger *log.Logger
44+
logger logger.Logger
4545
}
4646

4747
Route struct {
@@ -184,8 +184,6 @@ var (
184184
methodNotAllowedHandler = func(c Context) error {
185185
return NewHTTPError(http.StatusMethodNotAllowed)
186186
}
187-
188-
unixEpochTime = time.Unix(0, 0)
189187
)
190188

191189
// New creates an instance of Echo.
@@ -222,7 +220,6 @@ func New() (e *Echo) {
222220

223221
// Logger
224222
e.logger = log.New("echo")
225-
e.logger.SetLevel(log.INFO)
226223

227224
return
228225
}
@@ -232,23 +229,13 @@ func (e *Echo) Router() *Router {
232229
return e.router
233230
}
234231

235-
// SetLogPrefix sets the prefix for the logger. Default value is `echo`.
236-
func (e *Echo) SetLogPrefix(prefix string) {
237-
e.logger.SetPrefix(prefix)
238-
}
239-
240-
// SetLogOutput sets the output destination for the logger. Default value is `os.Stdout`
241-
func (e *Echo) SetLogOutput(w io.Writer) {
242-
e.logger.SetOutput(w)
243-
}
244-
245-
// SetLogLevel sets the log level for the logger. Default value is `log.INFO`.
246-
func (e *Echo) SetLogLevel(l log.Level) {
247-
e.logger.SetLevel(l)
232+
// SetLogger sets the logger instance.
233+
func (e *Echo) SetLogger(logger logger.Logger) {
234+
e.logger = logger
248235
}
249236

250237
// Logger returns the logger instance.
251-
func (e *Echo) Logger() *log.Logger {
238+
func (e *Echo) Logger() logger.Logger {
252239
return e.logger
253240
}
254241

@@ -592,13 +579,13 @@ func (e *Echo) RunWithConfig(config *engine.Config) {
592579

593580
e.pool.Put(c)
594581
}
595-
e.engine = standard.NewServer(config, handler)
596582

597583
switch e.engineType {
598584
case engine.FastHTTP:
599-
e.engine = fasthttp.NewServer(config, handler)
585+
e.engine = fasthttp.NewServer(config, handler, e.logger)
586+
default:
587+
e.engine = standard.NewServer(config, handler, e.logger)
600588
}
601-
602589
e.engine.Start()
603590
}
604591

engine/fasthttp/server.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,8 @@ package fasthttp
33
import (
44
"net/http"
55

6-
"github.com/labstack/gommon/log"
7-
)
8-
import (
96
"github.com/labstack/echo/engine"
7+
"github.com/labstack/echo/logger"
108
"github.com/valyala/fasthttp"
119
)
1210

@@ -15,14 +13,16 @@ type (
1513
*http.Server
1614
config *engine.Config
1715
handler engine.HandlerFunc
16+
logger logger.Logger
1817
}
1918
)
2019

21-
func NewServer(config *engine.Config, handler engine.HandlerFunc) *Server {
20+
func NewServer(c *engine.Config, h engine.HandlerFunc, l logger.Logger) *Server {
2221
return &Server{
2322
Server: new(http.Server),
24-
config: config,
25-
handler: handler,
23+
config: c,
24+
handler: h,
25+
logger: l,
2626
}
2727
}
2828

@@ -39,5 +39,5 @@ func (s *Server) Start() {
3939
}
4040
s.handler(req, res)
4141
})
42-
log.Fatal(s.ListenAndServe())
42+
s.logger.Fatal(s.ListenAndServe())
4343
}

engine/standard/response.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"net/http"
66

77
"github.com/labstack/echo/engine"
8+
"github.com/labstack/echo/logger"
89
)
910

1011
type (
@@ -15,14 +16,16 @@ type (
1516
size int64
1617
committed bool
1718
writer io.Writer
19+
logger logger.Logger
1820
}
1921
)
2022

21-
func NewResponse(w http.ResponseWriter) *Response {
23+
func NewResponse(w http.ResponseWriter, l logger.Logger) *Response {
2224
return &Response{
2325
response: w,
2426
header: &Header{w.Header()},
2527
writer: w,
28+
logger: l,
2629
}
2730
}
2831

@@ -32,7 +35,7 @@ func (r *Response) Header() engine.Header {
3235

3336
func (r *Response) WriteHeader(code int) {
3437
if r.committed {
35-
// r.echo.Logger().Warn("response already committed")
38+
r.logger.Warn("response already committed")
3639
return
3740
}
3841
r.status = code

engine/standard/server.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package standard
22

33
import (
4-
"log"
54
"net/http"
65
"sync"
76

87
"github.com/labstack/echo/engine"
8+
"github.com/labstack/echo/logger"
99
)
1010

1111
type (
@@ -14,6 +14,7 @@ type (
1414
config *engine.Config
1515
handler engine.HandlerFunc
1616
pool *Pool
17+
logger logger.Logger
1718
}
1819

1920
Pool struct {
@@ -24,11 +25,11 @@ type (
2425
}
2526
)
2627

27-
func NewServer(config *engine.Config, handler engine.HandlerFunc) *Server {
28+
func NewServer(c *engine.Config, h engine.HandlerFunc, l logger.Logger) *Server {
2829
return &Server{
2930
Server: new(http.Server),
30-
config: config,
31-
handler: handler,
31+
config: c,
32+
handler: h,
3233
pool: &Pool{
3334
request: sync.Pool{
3435
New: func() interface{} {
@@ -37,7 +38,7 @@ func NewServer(config *engine.Config, handler engine.HandlerFunc) *Server {
3738
},
3839
response: sync.Pool{
3940
New: func() interface{} {
40-
return &Response{}
41+
return &Response{logger: l}
4142
},
4243
},
4344
header: sync.Pool{
@@ -51,6 +52,7 @@ func NewServer(config *engine.Config, handler engine.HandlerFunc) *Server {
5152
},
5253
},
5354
},
55+
logger: l,
5456
}
5557
}
5658

@@ -78,5 +80,5 @@ func (s *Server) Start() {
7880
s.pool.response.Put(res)
7981
s.pool.header.Put(resHdr)
8082
})
81-
log.Fatal(s.ListenAndServe())
83+
s.logger.Fatal(s.ListenAndServe())
8284
}

glide.lock

Lines changed: 5 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

logger/logger.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package logger
2+
3+
type (
4+
// Logger is the interface that declares Echo's logging system.
5+
Logger interface {
6+
Debug(...interface{})
7+
Debugf(string, ...interface{})
8+
9+
Info(...interface{})
10+
Infof(string, ...interface{})
11+
12+
Warn(...interface{})
13+
Warnf(string, ...interface{})
14+
15+
Error(...interface{})
16+
Errorf(string, ...interface{})
17+
18+
Fatal(...interface{})
19+
Fatalf(string, ...interface{})
20+
}
21+
)

middleware/logger.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ func Logger() echo.MiddlewareFunc {
2929
c.Error(err)
3030
}
3131
stop := time.Now()
32-
method := req.Method
32+
method := req.Method()
3333
path := req.URL().Path()
3434
if path == "" {
3535
path = "/"
@@ -47,7 +47,7 @@ func Logger() echo.MiddlewareFunc {
4747
code = color.Cyan(n)
4848
}
4949

50-
logger.Info("%s %s %s %s %s %d", remoteAddr, method, path, code, stop.Sub(start), size)
50+
logger.Infof("%s %s %s %s %s %d", remoteAddr, method, path, code, stop.Sub(start), size)
5151
return nil
5252
}
5353
}

middleware/logger_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88

99
"github.com/labstack/echo"
1010
"github.com/labstack/echo/test"
11+
"github.com/labstack/gommon/log"
1112
"github.com/stretchr/testify/assert"
1213
)
1314

@@ -56,7 +57,7 @@ func TestLoggerIPAddress(t *testing.T) {
5657
rec := test.NewResponseRecorder()
5758
c := echo.NewContext(req, rec, e)
5859
buf := new(bytes.Buffer)
59-
e.Logger().SetOutput(buf)
60+
e.Logger().(*log.Logger).SetOutput(buf)
6061
ip := "127.0.0.1"
6162
h := func(c echo.Context) error {
6263
return c.String(http.StatusOK, "test")

0 commit comments

Comments
 (0)