2
0

log_test.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package log
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "strings"
  6. "testing"
  7. "github.com/rs/zerolog"
  8. )
  9. func TestGetLogger(t *testing.T) {
  10. initialLogger := GetLogger()
  11. if initialLogger == nil {
  12. t.Error("GetLogger() returned nil")
  13. }
  14. secondLogger := GetLogger()
  15. if initialLogger != secondLogger {
  16. t.Error("GetLogger() returned different loggers on subsequent calls")
  17. }
  18. }
  19. func TestSetLogger(t *testing.T) {
  20. var buf bytes.Buffer
  21. newLogger := zerolog.New(&buf).With().Str("test", "value").Logger()
  22. SetLogger(&newLogger)
  23. // Log a message using the global logger
  24. Infof("Test message")
  25. // Parse the logged message
  26. loggedData := parseLogMessage(t, buf.String())
  27. // Check if the "test" field is present in the logged message
  28. if value, exists := loggedData["test"]; !exists || value != "value" {
  29. t.Error("SetLogger() did not set the logger with expected context")
  30. }
  31. }
  32. func TestLoggerConsistency(t *testing.T) {
  33. var buf bytes.Buffer
  34. newLogger := zerolog.New(&buf).With().Str("test", "consistency").Logger()
  35. SetLogger(&newLogger)
  36. // Log a message using the global logger
  37. Infof("Consistency test message")
  38. // Parse the logged message
  39. loggedData := parseLogMessage(t, buf.String())
  40. // Check if the "test" field is present in the logged message
  41. if value, exists := loggedData["test"]; !exists || value != "consistency" {
  42. t.Error("Logger inconsistency: Updated logger does not have expected context")
  43. }
  44. }
  45. func parseLogMessage(t *testing.T, logMessage string) map[string]interface{} {
  46. var loggedData map[string]interface{}
  47. if err := json.Unmarshal([]byte(strings.TrimSpace(logMessage)), &loggedData); err != nil {
  48. t.Fatalf("Failed to parse logged message: %v", err)
  49. }
  50. return loggedData
  51. }