go vendor
This commit is contained in:
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