common.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package common
  2. import (
  3. "bytes"
  4. "fmt"
  5. "crypto/md5"
  6. "io/ioutil"
  7. )
  8. // importantLog check if log level is above ERROR
  9. func CriticalLog(level []byte) bool {
  10. if bytes.Equal(level, []byte("WARN")) || bytes.Equal(level, []byte("ERROR")) || bytes.Equal(level, []byte("FATAL")) {
  11. return true
  12. }
  13. return false
  14. }
  15. // GetPriority get priority value from json body
  16. func GetPriority(logBody []byte) (value []byte, err error) {
  17. return SeekValue([]byte(`"priority":`), logBody)
  18. }
  19. // seekValue seek value by key from json
  20. func SeekValue(key []byte, logBody []byte) (value []byte, err error) {
  21. var (
  22. b, logLen, begin, end int
  23. )
  24. b = bytes.Index(logBody, key)
  25. if b != -1 {
  26. logLen = len(logBody)
  27. for begin = b + len(key); begin < logLen && logBody[begin] != byte('"'); begin++ {
  28. }
  29. if begin >= logLen {
  30. err = fmt.Errorf("beginning of value not found by key: %s", string(key))
  31. return
  32. }
  33. begin++ // begin position of value of appid
  34. for end = begin; end < logLen && logBody[end] != byte('"'); end++ {
  35. }
  36. if end >= logLen {
  37. err = fmt.Errorf("end of value not found by key: %s", string(key))
  38. return
  39. }
  40. value = logBody[begin:end]
  41. return
  42. } else {
  43. err = fmt.Errorf("key %s not found", string(key))
  44. return
  45. }
  46. }
  47. func FileMd5(filePath string) string {
  48. data, _ := ioutil.ReadFile(filePath)
  49. value := md5.Sum(data)
  50. return fmt.Sprintf("%x", value)
  51. }