logs.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package admin
  2. import (
  3. "encoding/json"
  4. "net/http"
  5. "time"
  6. "github.com/owncast/owncast/logging"
  7. "github.com/sirupsen/logrus"
  8. log "github.com/sirupsen/logrus"
  9. )
  10. // GetLogs will return all logs.
  11. func GetLogs(w http.ResponseWriter, r *http.Request) {
  12. logs := logging.Logger.AllEntries()
  13. response := make([]logsResponse, 0)
  14. for i := 0; i < len(logs); i++ {
  15. response = append(response, fromEntry(logs[i]))
  16. }
  17. w.Header().Set("Content-Type", "application/json")
  18. if err := json.NewEncoder(w).Encode(response); err != nil {
  19. log.Errorln(err)
  20. }
  21. }
  22. // GetWarnings will return only warning and error logs.
  23. func GetWarnings(w http.ResponseWriter, r *http.Request) {
  24. logs := logging.Logger.WarningEntries()
  25. response := make([]logsResponse, 0)
  26. for i := 0; i < len(logs); i++ {
  27. logEntry := logs[i]
  28. if logEntry != nil {
  29. response = append(response, fromEntry(logEntry))
  30. }
  31. }
  32. w.Header().Set("Content-Type", "application/json")
  33. if err := json.NewEncoder(w).Encode(response); err != nil {
  34. log.Errorln(err)
  35. }
  36. }
  37. type logsResponse struct {
  38. Message string `json:"message"`
  39. Level string `json:"level"`
  40. Time time.Time `json:"time"`
  41. }
  42. func fromEntry(e *logrus.Entry) logsResponse {
  43. return logsResponse{
  44. Message: e.Message,
  45. Level: e.Level.String(),
  46. Time: e.Time,
  47. }
  48. }