git.colasdn.top/newrelic/go-agent@v3.26.0+incompatible/_integrations/logcontext/logcontext.go (about)

     1  // Copyright 2020 New Relic Corporation. All rights reserved.
     2  // SPDX-License-Identifier: Apache-2.0
     3  
     4  package logcontext
     5  
     6  import newrelic "github.com/newrelic/go-agent"
     7  
     8  // Keys used for logging context JSON.
     9  const (
    10  	KeyFile       = "file.name"
    11  	KeyLevel      = "log.level"
    12  	KeyLine       = "line.number"
    13  	KeyMessage    = "message"
    14  	KeyMethod     = "method.name"
    15  	KeyTimestamp  = "timestamp"
    16  	KeyTraceID    = "trace.id"
    17  	KeySpanID     = "span.id"
    18  	KeyEntityName = "entity.name"
    19  	KeyEntityType = "entity.type"
    20  	KeyEntityGUID = "entity.guid"
    21  	KeyHostname   = "hostname"
    22  )
    23  
    24  func metadataMapField(m map[string]interface{}, key, val string) {
    25  	if val != "" {
    26  		m[key] = val
    27  	}
    28  }
    29  
    30  // AddLinkingMetadata adds the LinkingMetadata into a map.  Only non-empty
    31  // string fields are included in the map.  The specific key names facilitate
    32  // agent logs in context.  These keys are: "trace.id", "span.id",
    33  // "entity.name", "entity.type", "entity.guid", and "hostname".
    34  func AddLinkingMetadata(m map[string]interface{}, md newrelic.LinkingMetadata) {
    35  	metadataMapField(m, KeyTraceID, md.TraceID)
    36  	metadataMapField(m, KeySpanID, md.SpanID)
    37  	metadataMapField(m, KeyEntityName, md.EntityName)
    38  	metadataMapField(m, KeyEntityType, md.EntityType)
    39  	metadataMapField(m, KeyEntityGUID, md.EntityGUID)
    40  	metadataMapField(m, KeyHostname, md.Hostname)
    41  }