57 lines
1.3 KiB
Go
57 lines
1.3 KiB
Go
|
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)
|
||
|
}
|