Create & Init Project...
This commit is contained in:
80
app/service/ops/log-agent/processor/classify/classify.go
Normal file
80
app/service/ops/log-agent/processor/classify/classify.go
Normal file
@ -0,0 +1,80 @@
|
||||
package classify
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"context"
|
||||
"go-common/app/service/ops/log-agent/event"
|
||||
"go-common/app/service/ops/log-agent/processor"
|
||||
"go-common/app/service/ops/log-agent/pkg/common"
|
||||
)
|
||||
|
||||
type Classify struct {
|
||||
c *Config
|
||||
}
|
||||
|
||||
func init() {
|
||||
err := processor.Register("classify", Process)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
func Process(ctx context.Context, config interface{}, input <-chan *event.ProcessorEvent) (output chan *event.ProcessorEvent, err error) {
|
||||
classify := new(Classify)
|
||||
|
||||
if c, ok := config.(*Config); !ok {
|
||||
panic("Error config for Classify Processor")
|
||||
} else {
|
||||
if err = c.ConfigValidate(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
classify.c = c
|
||||
}
|
||||
|
||||
output = make(chan *event.ProcessorEvent)
|
||||
go func() {
|
||||
for {
|
||||
select {
|
||||
case e := <-input:
|
||||
// only do classify for ops-log
|
||||
if e.Destination == "lancer-ops-log" {
|
||||
if common.CriticalLog(e.Level) || e.Priority == "high" {
|
||||
e.LogId = classify.getLogIdByLevel("important")
|
||||
} else {
|
||||
e.LogId = classify.getLogIdByAppId(e.AppId)
|
||||
}
|
||||
}
|
||||
output <- e
|
||||
case <-ctx.Done():
|
||||
return
|
||||
}
|
||||
}
|
||||
}()
|
||||
return output, nil
|
||||
}
|
||||
|
||||
// getLogLevel get logId level by appId
|
||||
func (c *Classify) getLogIdByAppId(appId []byte) (logId string) {
|
||||
// get logId by setting
|
||||
if logLevel, ok := c.c.LogLevelMapConfig[string(appId)]; ok {
|
||||
return c.getLogIdByLevel(logLevel)
|
||||
}
|
||||
|
||||
// appId format error, logId 1
|
||||
if len(strings.Split(string(appId), ".")) < 3 {
|
||||
return c.getLogIdByLevel("low") // low level
|
||||
}
|
||||
|
||||
// set logLevel to 2 by default
|
||||
return c.getLogIdByLevel("normal") // normal level
|
||||
}
|
||||
|
||||
// getLogIdByLevel return logid by level
|
||||
func (c *Classify) getLogIdByLevel(level string) (logId string) {
|
||||
if logId, ok := c.c.LogIdMapConfig[level]; ok {
|
||||
return logId
|
||||
} else {
|
||||
// return 000161 by default
|
||||
return "000161"
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user