summaryrefslogtreecommitdiff
path: root/mapr/logformat/parser.go
diff options
context:
space:
mode:
authorPaul Bütow <pbuetow@mimecast.com>2020-01-20 18:41:05 +0000
committerPaul Bütow <pbuetow@mimecast.com>2020-01-21 14:35:23 +0000
commitc128865c4c7411c29a59fca9a3a2f95537686d7b (patch)
tree193bccc70d942c8b70cc93fae2670263701e43aa /mapr/logformat/parser.go
parent3755a9911ecb05886577095f2b8cc8b9e4066a3a (diff)
Move commands to cmd/ and move internal dependencies to internal/
Diffstat (limited to 'mapr/logformat/parser.go')
-rw-r--r--mapr/logformat/parser.go75
1 files changed, 0 insertions, 75 deletions
diff --git a/mapr/logformat/parser.go b/mapr/logformat/parser.go
deleted file mode 100644
index b7c8c5c..0000000
--- a/mapr/logformat/parser.go
+++ /dev/null
@@ -1,75 +0,0 @@
-package logformat
-
-import (
- "dtail/logger"
- "errors"
- "fmt"
- "os"
- "reflect"
- "strings"
-)
-
-// Parser is used to parse the mapreduce information from the server log files.
-type Parser struct {
- hostname string
- logFormatName string
- makeFieldsFunc reflect.Value
- makeFieldsReceiver reflect.Value
-}
-
-// NewParser returns a new log parser.
-func NewParser(logFormatName string) (*Parser, error) {
- hostname, err := os.Hostname()
-
- if err != nil {
- return nil, err
- }
-
- p := Parser{
- hostname: hostname,
- }
-
- err = p.reflectLogFormat(logFormatName)
- if err != nil {
- return nil, err
- }
-
- return &p, nil
-}
-
-// The aim of this is that everyone can plug in their own mapr log format
-// parsing method to DTail. Just add a method MakeFieldsMODULENAME to type
-// Parser. Whereas MODULENAME must be a upeprcase string.
-func (p *Parser) reflectLogFormat(logFormatName string) error {
- methodName := fmt.Sprintf("MakeFields%s", strings.ToUpper(logFormatName))
-
- rt := reflect.TypeOf(p)
- method, ok := rt.MethodByName(methodName)
- if !ok {
- return errors.New("No such mapr log format module: " + methodName)
- }
-
- p.makeFieldsFunc = method.Func
- p.makeFieldsReceiver = reflect.ValueOf(p)
-
- return nil
-}
-
-// MakeFields is for returning the fields from a given log line.
-func (p *Parser) MakeFields(maprLine string) (fields map[string]string, err error) {
- inputValues := []reflect.Value{p.makeFieldsReceiver, reflect.ValueOf(maprLine)}
- returnValues := p.makeFieldsFunc.Call(inputValues)
-
- errInterface := returnValues[1].Interface()
-
- if errInterface == nil {
- fields, err = returnValues[0].Interface().(map[string]string), nil
- logger.Trace("parser.MakeFields", fields, err)
- return
- }
-
- fields, err = returnValues[0].Interface().(map[string]string), errInterface.(error)
- logger.Trace("parser.MakeFields", fields, err)
-
- return
-}