package logging type LevelEnum uint16 const ( None LevelEnum = iota Error Warn Info Debug ) type levelInfo struct { abbrev string color string } var ( levelInfos = map[LevelEnum]levelInfo{ Error: {"ERR", Red}, Warn: {"WARN", Yellow}, Info: {"INFO", Cyan}, Debug: {"DEBUG", Green}, } ) func (s LevelEnum) Info() levelInfo { info, ok := levelInfos[s] if !ok { return levelInfo{"UNK", White} } return info } func (s LevelEnum) Format() string { info := s.Info() return colorize("["+info.abbrev+"]", info.color) }