summaryrefslogtreecommitdiff
path: root/internal/mapr/logformat/default.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2021-09-08 19:10:50 +0300
committerPaul Buetow <paul@buetow.org>2021-10-02 12:26:29 +0300
commit16dc57e1e1c28e9d762424e596223a980770e059 (patch)
treeea5a7d5caa7f4de7bd3b21e57d0e18c0d8507c7d /internal/mapr/logformat/default.go
parentc83c9e61a08c7ea1cb528bc26dfab25b46faa866 (diff)
mapreduce tables are in colors now too
Diffstat (limited to 'internal/mapr/logformat/default.go')
-rw-r--r--internal/mapr/logformat/default.go28
1 files changed, 14 insertions, 14 deletions
diff --git a/internal/mapr/logformat/default.go b/internal/mapr/logformat/default.go
index da976bd..c67137e 100644
--- a/internal/mapr/logformat/default.go
+++ b/internal/mapr/logformat/default.go
@@ -1,16 +1,22 @@
package logformat
import (
+ "fmt"
"strings"
- "github.com/mimecast/dtail/internal/io/logger"
"github.com/mimecast/dtail/internal/protocol"
)
-// MakeFieldsDEFAULT is the default log file mapreduce parser.
+// MakeFieldsDEFAULT is the default DTail log file key-value parser.
func (p *Parser) MakeFieldsDEFAULT(maprLine string) (map[string]string, error) {
splitted := strings.Split(maprLine, protocol.FieldDelimiter)
- fields := make(map[string]string, len(splitted))
+
+ if len(splitted) < 3 || !strings.HasPrefix(splitted[3], "MAPREDUCE:") || !strings.HasPrefix(splitted[0], "INFO") {
+ // Not a DTail mapreduce log line.
+ return nil, IgnoreFieldsErr
+ }
+
+ fields := make(map[string]string, len(splitted)+8)
fields["*"] = "*"
fields["$line"] = maprLine
@@ -19,20 +25,14 @@ func (p *Parser) MakeFieldsDEFAULT(maprLine string) (map[string]string, error) {
fields["$timezone"] = p.timeZoneName
fields["$timeoffset"] = p.timeZoneOffset
- kvStart := 0
- // DTail mapreduce format
- if len(splitted) > 3 && strings.HasPrefix(splitted[3], "MAPREDUCE:") {
- fields["$severity"] = splitted[0]
- // TODO: Parse time like we do at Mimecast
- fields["$time"] = splitted[1]
- kvStart = 4
- }
+ fields["$severity"] = splitted[0]
+ // TODO: Parse time like we do at Mimecast
+ fields["$time"] = splitted[1]
- for _, kv := range splitted[kvStart:] {
+ for _, kv := range splitted[4:] {
keyAndValue := strings.SplitN(kv, "=", 2)
if len(keyAndValue) != 2 {
- logger.Debug("Unable to parse key-value token, ignoring it", kv)
- continue
+ return fields, fmt.Errorf("Unable to parse key-value token '%s'", kv)
}
fields[strings.ToLower(keyAndValue[0])] = keyAndValue[1]
}