journal/priority.go

69 lines
1.6 KiB
Go

package journal
// Priority is the "level" or severity of the message.
type Priority int
const (
PriEmerg Priority = iota
PriAlert
PriCrit
PriErr
PriWarning
PriNotice
PriInfo
PriDebug
)
// String returns the same value as Keyword.
func (pri Priority) String() string {
return pri.Keyword()
}
// Keyword returns a keyword associated with the priority level. These should be
// recognisable to system operators.
func (pri Priority) Keyword() string {
switch pri {
case PriEmerg:
return "emerg"
case PriAlert:
return "alert"
case PriCrit:
return "crit"
case PriErr:
return "err"
case PriWarning:
return "warning"
case PriNotice:
return "notice"
case PriInfo:
return "info"
case PriDebug:
return "debug"
default:
return "?"
}
}
var priorityAttrKey = AttrKey{key: "PRIORITY"}
var priorityAttrMap = map[Priority]Attr{
PriEmerg: Attr{Key: priorityAttrKey, Value: []byte{'0'}},
PriAlert: Attr{Key: priorityAttrKey, Value: []byte{'1'}},
PriCrit: Attr{Key: priorityAttrKey, Value: []byte{'2'}},
PriErr: Attr{Key: priorityAttrKey, Value: []byte{'3'}},
PriWarning: Attr{Key: priorityAttrKey, Value: []byte{'4'}},
PriNotice: Attr{Key: priorityAttrKey, Value: []byte{'5'}},
PriInfo: Attr{Key: priorityAttrKey, Value: []byte{'6'}},
PriDebug: Attr{Key: priorityAttrKey, Value: []byte{'7'}},
}
var unknownPriorityAttr = Attr{Key: priorityAttrKey, Value: []byte{'6'}}
// Attr returns an attribute value ready to be used in a journal entry.
func (pri Priority) Attr() Attr {
if a, ok := priorityAttrMap[pri]; ok {
return a
}
return unknownPriorityAttr
}