log_msg.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. // package log_msg -- сообщение логгера.
  2. package log_msg
  3. import (
  4. "fmt"
  5. "gitp78su.ipnodns.ru/svi/kern/v4/d0"
  6. )
  7. type IString interface {
  8. String() string
  9. }
  10. // ILogMsg -- сообщение лога.
  11. type ILogMsg interface {
  12. IString
  13. // CreateAt -- когда создано
  14. CreateAt() *d0.LTime
  15. // Level -- уровень сообщения
  16. Level() *d0.LTxt
  17. // Msg -- текст сообщения
  18. Msg() *d0.LTxt
  19. }
  20. const (
  21. DEBUG = d0.Num(-4)
  22. INFO = d0.Num(-3)
  23. WARN = d0.Num(-2)
  24. ERROR = d0.Num(-1)
  25. NOTSET = d0.Num(0)
  26. )
  27. // logMsg -- сообщение логгера.
  28. type logMsg struct {
  29. level *d0.MTxt
  30. createdAt *d0.LTime
  31. msg d0.Txt
  32. }
  33. // NewLogMsg -- возвращает новое сообщение логгера.
  34. func NewLogMsg(level d0.Num, msg d0.Txt) ILogMsg {
  35. sf := &logMsg{
  36. createdAt: d0.LetTimeAuto(),
  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() *d0.LTxt {
  49. return d0.LetTxt(sf.msg)
  50. }
  51. // Level -- возвращает уровень сообщения.
  52. func (sf *logMsg) Level() *d0.LTxt {
  53. lev := d0.LetTxt(sf.level.Get())
  54. return lev
  55. }
  56. // CreateAt -- когда сообщение создано.
  57. func (sf *logMsg) CreateAt() *d0.LTime {
  58. return sf.createdAt
  59. }
  60. // Проверяет правильность своего состава.
  61. func (sf *logMsg) check(level d0.Num) {
  62. switch level {
  63. case DEBUG:
  64. sf.level.Set("DEBU")
  65. case INFO:
  66. sf.level.Set("INFO")
  67. case WARN:
  68. sf.level.Set("WARN")
  69. case ERROR:
  70. sf.level.Set("ERRO")
  71. default:
  72. d0.If(true).Hassert("logMsg.check(): NOT SET level(%v)", []any{level})
  73. }
  74. }