log.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "log/syslog"
  6. "github.com/valyala/fasthttp"
  7. )
  8. const (
  9. logRequestFmt = "[%s] %s: %s"
  10. logRequestSyslogFmt = "REQUEST [%s] %s: %s"
  11. logResponseFmt = "[%s] |\033[7;%dm %d \033[0m| %s"
  12. logResponseSyslogFmt = "RESPONSE [%s] | %d | %s"
  13. logWarningFmt = "\033[1;33m[WARNING]\033[0m %s"
  14. logWarningSyslogFmt = "WARNING %s"
  15. logFatalSyslogFmt = "FATAL %s"
  16. )
  17. func logRequest(reqID string, rctx *fasthttp.RequestCtx) {
  18. path := rctx.RequestURI()
  19. log.Printf(logRequestFmt, reqID, rctx.Method(), path)
  20. if syslogWriter != nil {
  21. syslogWriter.Notice(fmt.Sprintf(logRequestSyslogFmt, reqID, rctx.Method(), path))
  22. }
  23. }
  24. func logResponse(reqID string, status int, msg string) {
  25. var color int
  26. if status >= 500 {
  27. color = 31
  28. } else if status >= 400 {
  29. color = 33
  30. } else {
  31. color = 32
  32. }
  33. log.Printf(logResponseFmt, reqID, color, status, msg)
  34. if syslogWriter != nil {
  35. msg := fmt.Sprintf(logResponseSyslogFmt, reqID, status, msg)
  36. if status >= 500 {
  37. if syslogLevel >= syslog.LOG_ERR {
  38. syslogWriter.Err(msg)
  39. }
  40. } else if status >= 400 {
  41. if syslogLevel >= syslog.LOG_WARNING {
  42. syslogWriter.Warning(msg)
  43. }
  44. } else {
  45. if syslogLevel >= syslog.LOG_NOTICE {
  46. syslogWriter.Notice(msg)
  47. }
  48. }
  49. }
  50. }
  51. func logNotice(f string, args ...interface{}) {
  52. msg := fmt.Sprintf(f, args...)
  53. log.Print(msg)
  54. if syslogWriter != nil && syslogLevel >= syslog.LOG_NOTICE {
  55. syslogWriter.Notice(msg)
  56. }
  57. }
  58. func logWarning(f string, args ...interface{}) {
  59. msg := fmt.Sprintf(f, args...)
  60. log.Printf(logWarningFmt, msg)
  61. if syslogWriter != nil && syslogLevel >= syslog.LOG_WARNING {
  62. syslogWriter.Warning(fmt.Sprintf(logWarningSyslogFmt, msg))
  63. }
  64. }
  65. func logFatal(f string, args ...interface{}) {
  66. msg := fmt.Sprintf(f, args...)
  67. if syslogWriter != nil {
  68. syslogWriter.Crit(fmt.Sprintf(logFatalSyslogFmt, msg))
  69. }
  70. log.Fatal(msg)
  71. }