func Handler(sink *lager.ReconfigurableSink) http.Handler { mux := http.NewServeMux() mux.Handle("/debug/pprof/", http.HandlerFunc(pprof.Index)) mux.Handle("/debug/pprof/cmdline", http.HandlerFunc(pprof.Cmdline)) mux.Handle("/debug/pprof/profile", http.HandlerFunc(pprof.Profile)) mux.Handle("/debug/pprof/symbol", http.HandlerFunc(pprof.Symbol)) mux.Handle("/log-level", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { level, err := ioutil.ReadAll(r.Body) if err != nil { return } switch string(level) { case "debug", "DEBUG", "d", strconv.Itoa(int(lager.DEBUG)): sink.SetMinLevel(lager.DEBUG) case "info", "INFO", "i", strconv.Itoa(int(lager.INFO)): sink.SetMinLevel(lager.INFO) case "error", "ERROR", "e", strconv.Itoa(int(lager.ERROR)): sink.SetMinLevel(lager.ERROR) case "fatal", "FATAL", "f", strconv.Itoa(int(lager.FATAL)): sink.SetMinLevel(lager.FATAL) } })) return mux }
package lager_test import ( "github.com/pivotal-golang/lager" "github.com/pivotal-golang/lager/lagertest" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "github.com/onsi/gomega/gbytes" ) var _ = Describe("ReconfigurableSink", func() { var ( testSink *lagertest.TestSink sink *lager.ReconfigurableSink ) BeforeEach(func() { testSink = lagertest.NewTestSink() sink = lager.NewReconfigurableSink(testSink, lager.INFO) }) It("returns the current level", func() { Expect(sink.GetMinLevel()).To(Equal(lager.INFO)) }) Context("when logging above the minimum log level", func() { BeforeEach(func() { sink.Log(lager.INFO, []byte("hello world"))
package lager_test import ( "github.com/pivotal-golang/lager" "github.com/pivotal-golang/lager/lagertest" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "github.com/onsi/gomega/gbytes" ) var _ = Describe("ReconfigurableSink", func() { var ( testSink *lagertest.TestSink sink *lager.ReconfigurableSink ) BeforeEach(func() { testSink = lagertest.NewTestSink() sink = lager.NewReconfigurableSink(testSink, lager.INFO) }) It("returns the current level", func() { Ω(sink.GetMinLevel()).Should(Equal(lager.INFO)) }) Context("when logging above the minimum log level", func() { BeforeEach(func() { sink.Log(lager.INFO, []byte("hello world"))
"strconv" cf_debug_server "github.com/cloudfoundry-incubator/cf-debug-server" "github.com/pivotal-golang/lager" "github.com/tedsuo/ifrit" "github.com/tedsuo/ifrit/ginkgomon" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "github.com/onsi/gomega/gbytes" ) var _ = Describe("CF Debug Server", func() { var ( logBuf *gbytes.Buffer sink *lager.ReconfigurableSink process ifrit.Process ) BeforeEach(func() { logBuf = gbytes.NewBuffer() sink = lager.NewReconfigurableSink( lager.NewWriterSink(logBuf, lager.DEBUG), // permit no logging by default, for log reconfiguration below lager.FATAL+1, ) }) AfterEach(func() { ginkgomon.Interrupt(process) })