log_msg.go 1.9 KB

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