feat: delete old specific parsers and use new generic parser in file_monitor
This commit is contained in:
parent
0830b403e0
commit
794180c6ab
9 changed files with 21 additions and 595 deletions
|
|
@ -1,117 +1,3 @@
|
|||
// package parser
|
||||
|
||||
// import (
|
||||
// "fmt"
|
||||
// "strconv"
|
||||
// "strings"
|
||||
// "time"
|
||||
// "watch-tool/models"
|
||||
// "watch-tool/patterns"
|
||||
// )
|
||||
|
||||
// type GenericParser struct {
|
||||
// ServiceName string
|
||||
// Hostname string
|
||||
// Extractors []patterns.CompiledExtractor
|
||||
// CommonExt []patterns.CompiledExtractor
|
||||
// }
|
||||
|
||||
// func NewGenericParser(serviceName, hostname string) *GenericParser {
|
||||
// repo := patterns.GetInstance()
|
||||
// return &GenericParser{
|
||||
// ServiceName: serviceName,
|
||||
// Hostname: hostname,
|
||||
// Extractors: repo.GetExtractors(serviceName),
|
||||
// CommonExt: repo.GetExtractors("common"),
|
||||
// }
|
||||
// }
|
||||
|
||||
// func (p *GenericParser) Parse(line string) (models.LogMessage, error) {
|
||||
// entry := models.LogMessage{
|
||||
// Service: p.ServiceName,
|
||||
// Host: p.Hostname,
|
||||
// Timestamp: time.Now(),
|
||||
// Raw: line,
|
||||
// Fields: make(map[string]any),
|
||||
// }
|
||||
|
||||
// // 1. Common Extractors laufen lassen (z.B. Syslog Header entfernen/parsen)
|
||||
// // Wir nutzen eine temporäre Variable für den Rest-String, falls Header entfernt werden soll
|
||||
// currentLine := line
|
||||
|
||||
// // Hinweis: Hier könnte man Syslog-Logik generisch einbauen.
|
||||
// // Fürs Erste wenden wir Pattern einfach auf die Zeile an.
|
||||
|
||||
// // 2. Service Extractors anwenden
|
||||
// // Wir probieren ALLE Extractors, um maximale Informationen zu gewinnen.
|
||||
// // Das simuliert die Logik deiner alten Parser (erst Header, dann Details).
|
||||
// allExtractors := append(p.CommonExt, p.Extractors...)
|
||||
|
||||
// for _, ext := range allExtractors {
|
||||
// matches := ext.Pattern.FindStringSubmatch(currentLine)
|
||||
// if matches == nil {
|
||||
// continue
|
||||
// }
|
||||
|
||||
// subexpNames := ext.Pattern.SubexpNames()
|
||||
// for i, matchValue := range matches {
|
||||
// if i == 0 || matchValue == "" {
|
||||
// continue
|
||||
// }
|
||||
|
||||
// groupName := subexpNames[i]
|
||||
// if groupName == "" {
|
||||
// continue
|
||||
// }
|
||||
|
||||
// targetType := ext.Fields[groupName]
|
||||
// parsedValue, err := convertType(matchValue, targetType)
|
||||
// if err == nil {
|
||||
// switch groupName {
|
||||
// case "timestamp":
|
||||
// if t, ok := parsedValue.(time.Time); ok {
|
||||
// entry.Timestamp = t
|
||||
// }
|
||||
// case "log_level":
|
||||
// entry.LogLevel = fmt.Sprintf("%v", parsedValue)
|
||||
// case "message":
|
||||
// entry.LogMessage = fmt.Sprintf("%v", parsedValue)
|
||||
// default:
|
||||
// entry.Fields[groupName] = parsedValue
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// if entry.LogMessage == "" {
|
||||
// entry.LogMessage = strings.TrimSpace(line)
|
||||
// }
|
||||
|
||||
// return entry, nil
|
||||
// }
|
||||
|
||||
// func convertType(value, typeDef string) (any, error) {
|
||||
// if strings.HasPrefix(typeDef, "int") {
|
||||
// return strconv.Atoi(value)
|
||||
// }
|
||||
// if strings.HasPrefix(typeDef, "float") {
|
||||
// return strconv.ParseFloat(value, 64)
|
||||
// }
|
||||
// if after, ok := strings.CutPrefix(typeDef, "time:"); ok {
|
||||
// layout := after
|
||||
// // Workaround für Syslog (Jahr fehlt oft), hier vereinfacht:
|
||||
// if layout == "Jan 02 15:04:05" {
|
||||
// t, err := time.Parse(layout, value)
|
||||
// if err == nil {
|
||||
// return t.AddDate(time.Now().Year(), 0, 0), nil
|
||||
// }
|
||||
// return t, err
|
||||
// }
|
||||
// return time.Parse(layout, value)
|
||||
// }
|
||||
// // Default: String
|
||||
// return value, nil
|
||||
// }
|
||||
package parser
|
||||
|
||||
import (
|
||||
|
|
@ -287,8 +173,6 @@ func (p *GenericParser) mapField(entry *models.LogMessage, key string, value any
|
|||
entry.PID = pid
|
||||
}
|
||||
}
|
||||
// Mapping auf ServiceInformation Felder (Optional, falls nötig)
|
||||
// case "transfer_id": ...
|
||||
|
||||
default:
|
||||
entry.Fields[key] = value
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue