func NewWithLogger(out io.Writer) *Macaron {
	m := &Macaron{
		Injector: inject.New(),
		action:   func() {},
		Router:   NewRouter(),
		logger:   log.New(out, "[Macaron] ", 0),
	}
	m.Router.m = m
	m.Map(m.logger)
	m.Map(defaultReturnHandler())
	m.NotFound(http.NotFound)
	m.InternalServerError(func(rw http.ResponseWriter, err error) {
		http.Error(rw, err.Error(), 500)
	})
	return m
}
func NewWithLogger(out io.Writer) *Macaron {
	m := &Macaron{
		Injector: inject.New(),
		action:   func() {},
		Router:   NewRouter(),
		logger:   log.New(out, "[Macaron] ", 0),
	}
	m.Router.m = m
	m.Map(m.logger)
	m.Map(defaultReturnHandler())
	m.NotFound(http.NotFound)
	m.InternalServerError(func(rw http.ResponseWriter, err error) {
		http.Error(rw, err.Error(), 500)
	})
	return m
}
func NewWithLogger ( out io . Writer ) * Macaron { m := & Macaron { Injector : inject . New ( ) , action : func ( ) { } , Router : NewRouter ( ) , logger : log . New ( out , " " , 0 ) , } m . Router . m = m m . Map ( m . logger ) m . Map ( defaultReturnHandler ( ) ) m . NotFound ( http . NotFound ) m . InternalServerError ( func ( rw http . ResponseWriter , err error ) { http . Error ( rw , err . Error ( ) , 500 ) } ) return m }
// NewWithLogger creates a bare bones Macaron instance.
// Use this method if you want to have full control over the middleware that is used.
// You can specify logger output writer with this function.
NewWithLogger creates a bare bones Macaron instance . Use this method if you want to have full control over the middleware that is used . You can specify logger output writer with this function .