web_log.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. // package web_log -- веб-лог компонента
  2. package web_log
  3. import (
  4. "fmt"
  5. "strings"
  6. "sync"
  7. "time"
  8. . "wartank/app/lev0/types"
  9. )
  10. // ВебЛог -- веб-лог компонента
  11. type ВебЛог struct {
  12. лог []string // Буфер логирования
  13. еслиПеч bool
  14. блок sync.RWMutex
  15. }
  16. // НовВебЛог -- возвращает новый *ВебЛог
  17. func НовВебЛог(еслиПеч bool) ИВебЛог {
  18. сам := &ВебЛог{
  19. лог: []string{},
  20. еслиПеч: еслиПеч,
  21. }
  22. _ = ИВебЛог(сам)
  23. return сам
  24. }
  25. // ОтклВывод -- отключает вывод в консоль
  26. func (сам *ВебЛог) ОтклВывод() {
  27. сам.блок.Lock()
  28. defer сам.блок.Unlock()
  29. сам.еслиПеч = false
  30. }
  31. // Добавить -- добавляет строку в лог
  32. func (сам *ВебЛог) Добавить(сбщ string, арг ...interface{}) {
  33. сам.блок.Lock()
  34. defer сам.блок.Unlock()
  35. время := time.Now().Local().Format("2006-01-02 15:04:05.000 ")
  36. сбщ = время + fmt.Sprintf(сбщ, арг...)
  37. if сам.еслиПеч {
  38. fmt.Print(сбщ)
  39. }
  40. сам.лог = append(сам.лог, сбщ)
  41. if len(сам.лог) > 50 {
  42. сам.лог = сам.лог[50:]
  43. }
  44. }
  45. // Ошибка -- лог ошибок
  46. func (сам *ВебЛог) Ошибка() string {
  47. сам.блок.RLock()
  48. defer сам.блок.RUnlock()
  49. return strings.Join(сам.лог, "\n")
  50. }
  51. // Внимание -- лог предупреждений
  52. func (сам *ВебЛог) Внимание() string {
  53. сам.блок.RLock()
  54. defer сам.блок.RUnlock()
  55. return strings.Join(сам.лог, "\n")
  56. }
  57. // Инфо -- информационный лог
  58. func (сам *ВебЛог) Инфо() string {
  59. сам.блок.RLock()
  60. defer сам.блок.RUnlock()
  61. return strings.Join(сам.лог, "\n")
  62. }
  63. // Отладка -- возвращает весь лог компонента
  64. func (сам *ВебЛог) Отладка() string {
  65. сам.блок.RLock()
  66. defer сам.блок.RUnlock()
  67. return strings.Join(сам.лог, "\n")
  68. }