log_test.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package conf
  2. import (
  3. "path/filepath"
  4. "testing"
  5. "github.com/stretchr/testify/assert"
  6. "gopkg.in/ini.v1"
  7. log "unknwon.dev/clog/v2"
  8. )
  9. func Test_initLogConf(t *testing.T) {
  10. t.Run("missing configuration section", func(t *testing.T) {
  11. f, err := ini.Load([]byte(`
  12. [log]
  13. MODE = console
  14. `))
  15. if err != nil {
  16. t.Fatal(err)
  17. }
  18. got, hasConsole, err := initLogConf(f, false)
  19. assert.NotNil(t, err)
  20. assert.Equal(t, `missing configuration section [log.console] for "console" logger`, err.Error())
  21. assert.False(t, hasConsole)
  22. assert.Nil(t, got)
  23. })
  24. t.Run("no console logger", func(t *testing.T) {
  25. f, err := ini.Load([]byte(`
  26. [log]
  27. MODE = file
  28. [log.file]
  29. `))
  30. if err != nil {
  31. t.Fatal(err)
  32. }
  33. got, hasConsole, err := initLogConf(f, false)
  34. if err != nil {
  35. t.Fatal(err)
  36. }
  37. assert.False(t, hasConsole)
  38. assert.NotNil(t, got)
  39. })
  40. f, err := ini.Load([]byte(`
  41. [log]
  42. ROOT_PATH = log
  43. MODE = console, file, slack, discord
  44. BUFFER_LEN = 50
  45. LEVEL = trace
  46. [log.console]
  47. BUFFER_LEN = 10
  48. [log.file]
  49. LEVEL = INFO
  50. LOG_ROTATE = true
  51. DAILY_ROTATE = true
  52. MAX_SIZE_SHIFT = 20
  53. MAX_LINES = 1000
  54. MAX_DAYS = 3
  55. [log.slack]
  56. LEVEL = Warn
  57. URL = https://slack.com
  58. [log.discord]
  59. LEVEL = error
  60. URL = https://discordapp.com
  61. USERNAME = yoyo
  62. `))
  63. if err != nil {
  64. t.Fatal(err)
  65. }
  66. got, hasConsole, err := initLogConf(f, false)
  67. if err != nil {
  68. t.Fatal(err)
  69. }
  70. logConf := &logConf{
  71. RootPath: filepath.Join(WorkDir(), "log"),
  72. Modes: []string{
  73. log.DefaultConsoleName,
  74. log.DefaultFileName,
  75. log.DefaultSlackName,
  76. log.DefaultDiscordName,
  77. },
  78. Configs: []*loggerConf{
  79. {
  80. Buffer: 10,
  81. Config: log.ConsoleConfig{
  82. Level: log.LevelTrace,
  83. },
  84. }, {
  85. Buffer: 50,
  86. Config: log.FileConfig{
  87. Level: log.LevelInfo,
  88. Filename: filepath.Join(WorkDir(), "log", "gogs.log"),
  89. FileRotationConfig: log.FileRotationConfig{
  90. Rotate: true,
  91. Daily: true,
  92. MaxSize: 1 << 20,
  93. MaxLines: 1000,
  94. MaxDays: 3,
  95. },
  96. },
  97. }, {
  98. Buffer: 50,
  99. Config: log.SlackConfig{
  100. Level: log.LevelWarn,
  101. URL: "https://slack.com",
  102. },
  103. }, {
  104. Buffer: 50,
  105. Config: log.DiscordConfig{
  106. Level: log.LevelError,
  107. URL: "https://discordapp.com",
  108. Username: "yoyo",
  109. },
  110. },
  111. },
  112. }
  113. assert.True(t, hasConsole)
  114. assert.Equal(t, logConf, got)
  115. }