// package log_msg -- сообщение логгера. package log_msg import ( "fmt" "gitp78su.ipnodns.ru/svi/kern/v4/d0" ) type IString interface { String() string } // ILogMsg -- сообщение лога. type ILogMsg interface { IString // CreateAt -- когда создано CreateAt() *d0.LTime // Level -- уровень сообщения Level() *d0.LTxt // Msg -- текст сообщения Msg() *d0.LTxt } const ( DEBUG = d0.Num(-4) INFO = d0.Num(-3) WARN = d0.Num(-2) ERROR = d0.Num(-1) NOTSET = d0.Num(0) ) // logMsg -- сообщение логгера. type logMsg struct { level *d0.MTxt createdAt *d0.LTime msg d0.Txt } // NewLogMsg -- возвращает новое сообщение логгера. func NewLogMsg(level d0.Num, msg d0.Txt) ILogMsg { sf := &logMsg{ createdAt: d0.LetTimeAuto(), msg: msg, } sf.check(level) return sf } // String -- возвращает форматированное сообщение лога. func (sf *logMsg) String() string { strOut := fmt.Sprintf("%v %v %v", sf.level, sf.createdAt, sf.msg) return strOut } // Msg -- возвращает хранимое сообщение. func (sf *logMsg) Msg() *d0.LTxt { return d0.LetTxt(sf.msg) } // Level -- возвращает уровень сообщения. func (sf *logMsg) Level() *d0.LTxt { lev := d0.LetTxt(sf.level.Get()) return lev } // CreateAt -- когда сообщение создано. func (sf *logMsg) CreateAt() *d0.LTime { return sf.createdAt } // Проверяет правильность своего состава. func (sf *logMsg) check(level d0.Num) { switch level { case DEBUG: sf.level.Set("DEBU") case INFO: sf.level.Set("INFO") case WARN: sf.level.Set("WARN") case ERROR: sf.level.Set("ERRO") default: d0.If(true).Hassert("logMsg.check(): NOT SET level(%v)", []any{level}) } }