github.com/mongodb/grip@v0.0.0-20240213223901-f906268d82b9/message/string.go (about)

     1  package message
     2  
     3  import "github.com/mongodb/grip/level"
     4  
     5  type stringMessage struct {
     6  	Message string `bson:"message" json:"message" yaml:"message"`
     7  	Base    `bson:"metadata" json:"metadata" yaml:"metadata"`
     8  
     9  	includeExtendedMetadata bool
    10  }
    11  
    12  // NewDefaultMessage provides a Composer interface around a single
    13  // string, which are always loggable unless the string is empty.
    14  func NewDefaultMessage(p level.Priority, message string) Composer {
    15  	m := &stringMessage{
    16  		Message: message,
    17  	}
    18  	_ = m.SetPriority(p)
    19  	return m
    20  }
    21  
    22  // NewString provides a basic message consisting of a single line.
    23  func NewString(m string) Composer {
    24  	return &stringMessage{
    25  		Message: m,
    26  	}
    27  }
    28  
    29  // NewExtendedString is the same as NewString, but also collects extended
    30  // logging metadata.
    31  func NewExtendedString(m string) Composer {
    32  	return &stringMessage{
    33  		Message:                 m,
    34  		includeExtendedMetadata: true,
    35  	}
    36  }
    37  
    38  // NewExtendedStringMessage is the same as NewDefaultMessage, but also collects
    39  // and also collects extended logging metadata.
    40  func NewExtendedDefaultMessage(p level.Priority, message string) Composer {
    41  	m := &stringMessage{
    42  		Message:                 message,
    43  		includeExtendedMetadata: false,
    44  	}
    45  	_ = m.SetPriority(p)
    46  	return m
    47  }
    48  
    49  func (s *stringMessage) String() string {
    50  	return s.Message
    51  }
    52  
    53  func (s *stringMessage) Loggable() bool {
    54  	return s.Message != ""
    55  }
    56  
    57  func (s *stringMessage) Raw() interface{} {
    58  	_ = s.Collect(s.includeExtendedMetadata)
    59  	return s
    60  }