log_msg.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. // package log_msg -- сообщение логгера.
  2. package log_msg
  3. import (
  4. "fmt"
  5. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/core_spec"
  6. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
  7. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
  8. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/voc/etime"
  9. )
  10. // ILogMsg -- сообщение лога.
  11. type ILogMsg interface {
  12. // CreateAt -- когда создано
  13. CreateAt() core_spec.ITime
  14. // Level -- уровень сообщения
  15. Level() defs.ITxtMut
  16. // Msg -- текст сообщения
  17. Msg() defs.ITxtFix
  18. // String -- форматированная строка
  19. String() string
  20. }
  21. const (
  22. DEBUG = -3
  23. INFO = -2
  24. WARN = -1
  25. ERROR = 0
  26. )
  27. // logMsg -- сообщение логгера.
  28. type logMsg struct {
  29. level defs.ITxtMut
  30. createdAt core_spec.ITime
  31. msg defs.ITimeFix
  32. }
  33. // NewLogMsg -- возвращает новое сообщение логгера.
  34. func NewLogMsg(level int, msg defs.ITxtFix) ILogMsg {
  35. sf := &logMsg{
  36. createdAt: etime.NewETimeAuto(),
  37. msg: msg,
  38. }
  39. sf.check(level)
  40. return sf
  41. }
  42. // String -- возвращает форматированное сообщение лога.
  43. func (sf *logMsg) String() string {
  44. strOut := fmt.Sprintf("%v %v %v", sf.level, sf.createdAt, sf.msg)
  45. return strOut
  46. }
  47. // Msg -- возвращает хранимое сообщение.
  48. func (sf *logMsg) Msg() defs.ITxtFix {
  49. return sf.msg
  50. }
  51. // Level -- возвращает уровень сообщения.
  52. func (sf *logMsg) Level() defs.ITxtMut {
  53. return sf.level
  54. }
  55. // CreateAt -- когда сообщение создано.
  56. func (sf *logMsg) CreateAt() core_spec.ITime {
  57. return sf.createdAt
  58. }
  59. // Проверяет правильность своего состава.
  60. func (sf *logMsg) check(level int) {
  61. switch level {
  62. case DEBUG:
  63. sf.level.Set("DEBU")
  64. case INFO:
  65. sf.level.Set("INFO")
  66. case WARN:
  67. sf.level.Set("WARN")
  68. case ERROR:
  69. sf.level.Set("ERRO")
  70. default:
  71. helpers.Hassert(false, "logMsg.check(): unknown level(%v)", []any{level})
  72. }
  73. }