You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.3 KiB
56 lines
1.3 KiB
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) |
|
}
|
|
|