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 }