bilibili-backup/app/service/ops/log-agent/pkg/common/common.go

57 lines
1.3 KiB
Go
Raw Normal View History

2019-04-22 10:59:20 +08:00
package common
import (
"bytes"
"fmt"
"crypto/md5"
"io/ioutil"
)
// importantLog check if log level is above ERROR
func CriticalLog(level []byte) bool {
if bytes.Equal(level, []byte("WARN")) || bytes.Equal(level, []byte("ERROR")) || bytes.Equal(level, []byte("FATAL")) {
return true
}
return false
}
// GetPriority get priority value from json body
func GetPriority(logBody []byte) (value []byte, err error) {
return SeekValue([]byte(`"priority":`), logBody)
}
// seekValue seek value by key from json
func SeekValue(key []byte, logBody []byte) (value []byte, err error) {
var (
b, logLen, begin, end int
)
b = bytes.Index(logBody, key)
if b != -1 {
logLen = len(logBody)
for begin = b + len(key); begin < logLen && logBody[begin] != byte('"'); begin++ {
}
if begin >= logLen {
err = fmt.Errorf("beginning of value not found by key: %s", string(key))
return
}
begin++ // begin position of value of appid
for end = begin; end < logLen && logBody[end] != byte('"'); end++ {
}
if end >= logLen {
err = fmt.Errorf("end of value not found by key: %s", string(key))
return
}
value = logBody[begin:end]
return
} else {
err = fmt.Errorf("key %s not found", string(key))
return
}
}
func FileMd5(filePath string) string {
data, _ := ioutil.ReadFile(filePath)
value := md5.Sum(data)
return fmt.Sprintf("%x", value)
}