logger.go 1.9 KB

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