go vendor
This commit is contained in:
15
vendor/github.com/revel/modules/server-engine/newrelic/README.md
generated
vendored
Normal file
15
vendor/github.com/revel/modules/server-engine/newrelic/README.md
generated
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
# NewRelic
|
||||
This module is the for [NewRelic](http://newrelic.com) it wraps the Go
|
||||
http server and inserts a filter to track each requests.
|
||||
|
||||
###App.conf
|
||||
- **server.engine** You must set this to `newrelic` in order to use this server engine
|
||||
- **server.newrelic.license** The license key for NewRelic
|
||||
- **server.newrelic.addfilter** Defauls `true` When true a filter is inserted
|
||||
into `revel.Filters` at position 2. This filter logs every request.
|
||||
|
||||
###Other Notes
|
||||
There is a controller called RelicController which contains a single method
|
||||
to return a `newrelic.Application` object. If you want to access this object
|
||||
you can extend that class.
|
||||
|
18
vendor/github.com/revel/modules/server-engine/newrelic/app/controllers/RelicController.go
generated
vendored
Normal file
18
vendor/github.com/revel/modules/server-engine/newrelic/app/controllers/RelicController.go
generated
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"github.com/newrelic/go-agent"
|
||||
"github.com/revel/modules/server-engine/newrelic"
|
||||
"github.com/revel/revel"
|
||||
)
|
||||
|
||||
type RelicController struct {
|
||||
*revel.Controller
|
||||
}
|
||||
|
||||
func (r *RelicController) GetRelicApplication() newrelic.Application {
|
||||
if app, ok := revel.CurrentEngine.(*revelnewrelic.ServerNewRelic); ok {
|
||||
return app.NewRelicApp
|
||||
}
|
||||
return nil
|
||||
}
|
3
vendor/github.com/revel/modules/server-engine/newrelic/newrelic.go
generated
vendored
Normal file
3
vendor/github.com/revel/modules/server-engine/newrelic/newrelic.go
generated
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
package revelnewrelic
|
||||
|
||||
// Required for vendoring see golang.org/issue/13832
|
92
vendor/github.com/revel/modules/server-engine/newrelic/server-newrelic.go
generated
vendored
Normal file
92
vendor/github.com/revel/modules/server-engine/newrelic/server-newrelic.go
generated
vendored
Normal file
@ -0,0 +1,92 @@
|
||||
package revelnewrelic
|
||||
|
||||
import (
|
||||
"github.com/newrelic/go-agent"
|
||||
"github.com/revel/revel"
|
||||
)
|
||||
|
||||
type ServerNewRelic struct {
|
||||
NewRelicConfig *newrelic.Config
|
||||
NewRelicApp newrelic.Application
|
||||
revel.GoHttpServer
|
||||
}
|
||||
|
||||
var (
|
||||
serverLog = revel.AppLog
|
||||
)
|
||||
|
||||
func init() {
|
||||
revel.RegisterServerEngine("newrelic", func() revel.ServerEngine {
|
||||
nr := &ServerNewRelic{
|
||||
GoHttpServer: revel.GoHttpServer{},
|
||||
}
|
||||
config := newrelic.NewConfig("Unknown Application", " Unknown Key ")
|
||||
nr.NewRelicConfig = &config
|
||||
return nr
|
||||
})
|
||||
revel.RegisterModuleInit(func(m *revel.Module) {
|
||||
serverLog = m.Log
|
||||
})
|
||||
|
||||
}
|
||||
func (g *ServerNewRelic) Init(init *revel.EngineInit) {
|
||||
g.GoHttpServer.Init(init)
|
||||
}
|
||||
|
||||
func (nr *ServerNewRelic) Event(event int, args interface{}) {
|
||||
|
||||
switch event {
|
||||
case revel.ENGINE_BEFORE_INITIALIZED:
|
||||
nr.NewRelicConfig.AppName = revel.Config.StringDefault("app.name", "Uknown App")
|
||||
|
||||
license := revel.Config.StringDefault("server.newrelic.license", "")
|
||||
if license != "" {
|
||||
nr.NewRelicConfig.License = license
|
||||
serverLog.Debug("Assigned NewRelic license")
|
||||
} else {
|
||||
serverLog.Error("Newrelic license key not assigned, configuration missing 'server.newrelic.license'")
|
||||
}
|
||||
addfilter := revel.Config.BoolDefault("server.newrelic.addfilter", true)
|
||||
if addfilter {
|
||||
// Inject filter after the router (Normally position 2)
|
||||
revel.Filters = append(revel.Filters, NewRelicFilter)
|
||||
copy(revel.Filters[3:], revel.Filters[2:])
|
||||
revel.Filters[2] = NewRelicFilter
|
||||
serverLog.Debug("Newrelic filter injected")
|
||||
}
|
||||
case revel.ENGINE_STARTED:
|
||||
// Check to see if configuration is set
|
||||
// create the application interface
|
||||
app, err := newrelic.NewApplication(*nr.NewRelicConfig)
|
||||
if err != nil {
|
||||
serverLog.Panic("Failed to start NewRelic:", "error", err)
|
||||
}
|
||||
nr.NewRelicApp = app
|
||||
|
||||
}
|
||||
|
||||
nr.GoHttpServer.Event(event, args)
|
||||
}
|
||||
func (nr *ServerNewRelic) Name() string {
|
||||
return "newrelic"
|
||||
}
|
||||
func (nr *ServerNewRelic) Engine() interface{} {
|
||||
return nr
|
||||
}
|
||||
|
||||
// This is a simplistic example of setting up a filter to record all events for the
|
||||
// webserver as transactions
|
||||
func NewRelicFilter(c *revel.Controller, fc []revel.Filter) {
|
||||
if nr, ok := revel.CurrentEngine.Engine().(*ServerNewRelic); ok {
|
||||
if nr.NewRelicApp != nil {
|
||||
txn := nr.NewRelicApp.StartTransaction(c.Action,
|
||||
c.Response.Out.Server.(*revel.GoResponse).Original,
|
||||
c.Request.In.(*revel.GoRequest).Original)
|
||||
defer txn.End()
|
||||
} else {
|
||||
serverLog.Error("Newrelic application not initialized before filter called")
|
||||
}
|
||||
}
|
||||
|
||||
fc[0](c, fc[1:])
|
||||
}
|
Reference in New Issue
Block a user