logger.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. // package kernel_log -- логгер ядра
  2. package kernel_log
  3. import (
  4. "fmt"
  5. "sync"
  6. . "wartank/pkg/helpers"
  7. . "wartank/pkg/kernel/kernel_types"
  8. )
  9. var блок sync.Mutex
  10. type Логгер struct {
  11. префикс string
  12. }
  13. func НовЛоггер(конт ИЯдроСловарь) *Логгер {
  14. ПроверТверд(конт != nil, "НовЯдроЛог(): ИЯдроСловарь==пусто")
  15. сам := &Логгер{
  16. префикс: конт.Получ("префикс").(string),
  17. }
  18. _ = ИЯдроЛог(сам)
  19. return сам
  20. }
  21. // Паника -- проверяет на совпадение условия
  22. func (сам *Логгер) Паника(условие bool, формат string, аргументы ...interface{}) {
  23. блок.Lock()
  24. defer блок.Unlock()
  25. if условие {
  26. panic(fmt.Sprintf("ПАНИК "+сам.префикс+"."+формат, аргументы...))
  27. }
  28. }
  29. // Ошибка -- выводит в консоль ошибку
  30. func (сам *Логгер) Ошибка(формат string, аргументы ...interface{}) {
  31. блок.Lock()
  32. defer блок.Unlock()
  33. fmt.Printf("ОШИБК "+сам.префикс+"."+формат, аргументы...)
  34. }
  35. // Отладка -- выводит в консоль отладку
  36. func (сам *Логгер) Отладка(формат string, аргументы ...interface{}) {
  37. блок.Lock()
  38. defer блок.Unlock()
  39. fmt.Printf("ОТЛАД "+сам.префикс+"."+формат, аргументы...)
  40. }
  41. // Инфо -- выводит в консоль информацию
  42. func (сам *Логгер) Инфо(формат string, аргументы ...interface{}) {
  43. блок.Lock()
  44. defer блок.Unlock()
  45. fmt.Printf("ИНФО "+сам.префикс+"."+формат, аргументы...)
  46. }
  47. // Внимание -- выводит в консоль предупреждение
  48. func (сам *Логгер) Внимание(формат string, аргументы ...interface{}) {
  49. блок.Lock()
  50. defer блок.Unlock()
  51. fmt.Printf("ВНИМА "+сам.префикс+"."+формат, аргументы...)
  52. }