// package log_msg -- сообщение логгера. package log_msg import ( "fmt" "gitp78su.ipnodns.ru/svi/kern/v4/lev0" ) type IString interface { String() string } // ILogMsg -- сообщение лога. type ILogMsg interface { IString // CreateAt -- когда создано CreateAt() *lev0.LTime // Level -- уровень сообщения Level() *lev0.LTxt // Msg -- текст сообщения Msg() *lev0.LTxt } const ( DEBUG = lev0.Int(-4) INFO = lev0.Int(-3) WARN = lev0.Int(-2) ERROR = lev0.Int(-1) NOTSET = lev0.Int(0) ) // logMsg -- сообщение логгера. type logMsg struct { level *lev0.MTxt createdAt *lev0.LTime msg lev0.ATxt } // NewLogMsg -- возвращает новое сообщение логгера. func NewLogMsg(level lev0.Int, msg lev0.ATxt) ILogMsg { sf := &logMsg{ createdAt: lev0.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() *lev0.LTxt { return lev0.LetTxt(sf.msg) } // Level -- возвращает уровень сообщения. func (sf *logMsg) Level() *lev0.LTxt { lev := lev0.LetTxt(sf.level.Get()) return lev } // CreateAt -- когда сообщение создано. func (sf *logMsg) CreateAt() *lev0.LTime { return sf.createdAt } // Проверяет правильность своего состава. func (sf *logMsg) check(level lev0.Int) { 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: lev0.If(true).Hassert("logMsg.check(): NOT SET level(%v)", []any{level}) } }