server.go
func (ctx *RequestCtx) Logger() Logger {
	if ctx.logger.ctx == nil {
		ctx.logger.ctx = ctx
	}
	if ctx.logger.logger == nil {
		ctx.logger.logger = ctx.s.logger()
	}
	return &ctx.logger
}
func (ctx *RequestCtx) Logger() Logger {
	if ctx.logger.ctx == nil {
		ctx.logger.ctx = ctx
	}
	if ctx.logger.logger == nil {
		ctx.logger.logger = ctx.s.logger()
	}
	return &ctx.logger
}
func ( ctx * RequestCtx ) Logger ( ) Logger { if ctx . logger . ctx == nil { ctx . logger . ctx = ctx } if ctx . logger . logger == nil { ctx . logger . logger = ctx . s . logger ( ) } return & ctx . logger }
// Logger returns logger, which may be used for logging arbitrary
// request-specific messages inside RequestHandler.
//
// Each message logged via returned logger contains request-specific information
// such as request id, request duration, local address, remote address,
// request method and request url.
//
// It is safe re-using returned logger for logging multiple messages
// for the current request.
//
// The returned logger is valid until returning from RequestHandler.
Logger returns logger which may be used for logging arbitrary request - specific messages inside RequestHandler . Each message logged via returned logger contains request - specific information such as request id request duration local address remote address request method and request url . It is safe re - using returned logger for logging multiple messages for the current request . The returned logger is valid until returning from RequestHandler .