44 "bytes"
55 "compress/gzip"
66 "errors"
7- "fmt"
87 "net/http"
98 "runtime"
109 "time"
@@ -27,6 +26,7 @@ type SumoLogicAppender struct {
2726 sumoCategory string
2827 sumoName string
2928 sumoHost string
29+ verboseLogMessages bool
3030}
3131
3232type SumoBuffer struct {
@@ -35,7 +35,7 @@ type SumoBuffer struct {
3535 timerIdlebuffer time.Time
3636}
3737
38- func NewSumoLogicAppender (urlValue string , connectionTimeoutValue int , nozzleQueue * eventQueue.Queue , eventsBatchSize int , sumoPostMinimumDelay time.Duration , sumoCategory string , sumoName string , sumoHost string ) * SumoLogicAppender {
38+ func NewSumoLogicAppender (urlValue string , connectionTimeoutValue int , nozzleQueue * eventQueue.Queue , eventsBatchSize int , sumoPostMinimumDelay time.Duration , sumoCategory string , sumoName string , sumoHost string , verboseLogMessages bool ) * SumoLogicAppender {
3939 return & SumoLogicAppender {
4040 url : urlValue ,
4141 connectionTimeout : connectionTimeoutValue ,
@@ -46,6 +46,7 @@ func NewSumoLogicAppender(urlValue string, connectionTimeoutValue int, nozzleQue
4646 sumoCategory : sumoCategory ,
4747 sumoName : sumoName ,
4848 sumoHost : sumoHost ,
49+ verboseLogMessages : verboseLogMessages ,
4950 }
5051}
5152
@@ -106,7 +107,7 @@ func (s *SumoLogicAppender) Start() {
106107
107108}
108109
109- func StringBuilder (event * events.Event ) string {
110+ func StringBuilder (event * events.Event , verboseLogMessages bool ) string {
110111
111112 eventType := event .Type
112113 var msg []byte
@@ -135,11 +136,25 @@ func StringBuilder(event *events.Event) string {
135136 msg = message
136137 }
137138 case "LogMessage" :
138- timestamp := time .Unix (0 , event .Fields ["timestamp" ].(int64 )* int64 (time .Nanosecond )).String ()
139- event .Fields ["timestamp" ] = timestamp
140- message , err := json .Marshal (event )
141- if err == nil {
142- msg = message
139+ if verboseLogMessages == true {
140+ timestamp := time .Unix (0 , event .Fields ["timestamp" ].(int64 )* int64 (time .Nanosecond )).String ()
141+ event .Fields ["timestamp" ] = timestamp
142+ message , err := json .Marshal (event )
143+ if err == nil {
144+ msg = message
145+ }
146+ } else {
147+ eventNoVerbose := events.Event {
148+ Fields : map [string ]interface {}{
149+ "cf_app_guid" : event .Fields ["cf_app_id" ],
150+ },
151+ Msg : event .Msg ,
152+ Type : event .Type ,
153+ }
154+ message , err := json .Marshal (eventNoVerbose )
155+ if err == nil {
156+ msg = message
157+ }
143158 }
144159 case "ValueMetric" :
145160 message , err := json .Marshal (event )
@@ -168,7 +183,7 @@ func StringBuilder(event *events.Event) string {
168183}
169184
170185func (s * SumoLogicAppender ) AppendLogs (buffer * SumoBuffer ) {
171- buffer .logStringToSend .Write ([]byte (StringBuilder (s .nozzleQueue .Pop ())))
186+ buffer .logStringToSend .Write ([]byte (StringBuilder (s .nozzleQueue .Pop (), s . verboseLogMessages )))
172187 buffer .logEventsInCurrentBuffer ++
173188
174189}
@@ -179,7 +194,6 @@ func (s *SumoLogicAppender) SendToSumo(logStringToSend string /*, wg *sync.WaitG
179194 g := gzip .NewWriter (& buf )
180195 g .Write ([]byte (logStringToSend ))
181196 g .Close ()
182- fmt .Println (time .Since (s .timerBetweenPost ))
183197 for time .Since (s .timerBetweenPost ) < s .sumoPostMinimumDelay {
184198 logging .Info . /*Trace*/ Println ("Delaying post to honor minimum post delay" )
185199 time .Sleep (100 * time .Millisecond )
@@ -199,7 +213,7 @@ func (s *SumoLogicAppender) SendToSumo(logStringToSend string /*, wg *sync.WaitG
199213 request .Header .Add ("X-Sumo-Host" , s .sumoHost )
200214 }
201215 if s .sumoCategory != "" {
202- request .Header .Add ("X-Sumo-Host " , s .sumoCategory )
216+ request .Header .Add ("X-Sumo-Category " , s .sumoCategory )
203217 }
204218
205219 response , err := s .httpClient .Do (request )
@@ -225,7 +239,7 @@ func (s *SumoLogicAppender) SendToSumo(logStringToSend string /*, wg *sync.WaitG
225239 request .Header .Add ("X-Sumo-Host" , s .sumoHost )
226240 }
227241 if s .sumoCategory != "" {
228- request .Header .Add ("X-Sumo-Host " , s .sumoCategory )
242+ request .Header .Add ("X-Sumo-Category " , s .sumoCategory )
229243 }
230244 response , errRetry = s .httpClient .Do (request )
231245 if errRetry != nil {
@@ -240,7 +254,7 @@ func (s *SumoLogicAppender) SendToSumo(logStringToSend string /*, wg *sync.WaitG
240254 time .Sleep (300 * time .Millisecond )
241255 return attempt < 5 , errRetry
242256 } else if response .StatusCode == 200 {
243- logging .Info . /* Trace*/ Println ("Post of logs successful after retry..." )
257+ logging .Trace . Println ("Post of logs successful after retry..." )
244258 s .timerBetweenPost = time .Now ()
245259 statusCode = response .StatusCode
246260 return true , err
@@ -255,7 +269,7 @@ func (s *SumoLogicAppender) SendToSumo(logStringToSend string /*, wg *sync.WaitG
255269 logging .Error .Printf ("Not able to post after retry, with status code: %d" , statusCode )
256270 }
257271 } else if response .StatusCode == 200 {
258- logging .Info . /* Trace*/ Println ("Post of logs successful" )
272+ logging .Trace . Println ("Post of logs successful" )
259273 s .timerBetweenPost = time .Now ()
260274 }
261275
0 commit comments