log_msg.go 2.2 KB

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