|
|
@@ -6,25 +6,36 @@ import (
|
|
|
"sync"
|
|
|
|
|
|
"gitp78su.ipnodns.ru/svi/kern/kc/log_buf/log_msg"
|
|
|
+ "gitp78su.ipnodns.ru/svi/kern/kc/safe_bool"
|
|
|
. "gitp78su.ipnodns.ru/svi/kern/krn/ktypes"
|
|
|
)
|
|
|
|
|
|
// logBuf -- потокобезопасный буфер лога
|
|
|
type logBuf struct {
|
|
|
sync.RWMutex
|
|
|
+ isTerm ISafeBool // Признак вывода в стандартный поток
|
|
|
lst []ILogMsg
|
|
|
lstErr []ILogMsg
|
|
|
}
|
|
|
|
|
|
// NewLogBuf -- возвращает новый потокобезопасный буфер лога
|
|
|
-func NewLogBuf() ILogBuf {
|
|
|
+func NewLogBuf(isTerm bool) ILogBuf {
|
|
|
sf := &logBuf{
|
|
|
+ isTerm: safe_bool.NewSafeBool(),
|
|
|
lst: []ILogMsg{},
|
|
|
lstErr: []ILogMsg{},
|
|
|
}
|
|
|
+ if isTerm {
|
|
|
+ sf.IsTerm().Set()
|
|
|
+ }
|
|
|
return sf
|
|
|
}
|
|
|
|
|
|
+// IsTerm -- возвращает признак логирования
|
|
|
+func (sf *logBuf) IsTerm() ISafeBool {
|
|
|
+ return sf.isTerm
|
|
|
+}
|
|
|
+
|
|
|
// GetErr -- возвращает сообщение ошибки по номеру
|
|
|
func (sf *logBuf) GetErr(num int) ILogMsg {
|
|
|
sf.RLock()
|
|
|
@@ -74,6 +85,9 @@ func (sf *logBuf) Debug(fMsg string, args ...any) {
|
|
|
_msg := log_msg.NewLogMsg(log_msg.DEBUG, strMsg)
|
|
|
sf.lst = append(sf.lst, _msg)
|
|
|
sf.checkLen()
|
|
|
+ if sf.isTerm.Get() {
|
|
|
+ fmt.Println(_msg.String())
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// Info -- информационные сообщения
|
|
|
@@ -88,6 +102,9 @@ func (sf *logBuf) Info(fMsg string, args ...any) {
|
|
|
_msg := log_msg.NewLogMsg(log_msg.INFO, strMsg)
|
|
|
sf.lst = append(sf.lst, _msg)
|
|
|
sf.checkLen()
|
|
|
+ if sf.isTerm.Get() {
|
|
|
+ fmt.Println(_msg.String())
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// Warn -- предупреждающие сообщения
|
|
|
@@ -102,6 +119,9 @@ func (sf *logBuf) Warn(fMsg string, args ...any) {
|
|
|
_msg := log_msg.NewLogMsg(log_msg.WARN, strMsg)
|
|
|
sf.lst = append(sf.lst, _msg)
|
|
|
sf.checkLen()
|
|
|
+ if sf.isTerm.Get() {
|
|
|
+ fmt.Println(_msg.String())
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// Err -- сообщения об ошибках
|
|
|
@@ -118,6 +138,9 @@ func (sf *logBuf) Err(fMsg string, args ...any) {
|
|
|
sf.lstErr = append(sf.lstErr, _msg)
|
|
|
sf.checkLen()
|
|
|
sf.checkLenErr()
|
|
|
+ if sf.isTerm.Get() {
|
|
|
+ fmt.Println(_msg.String())
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// Size -- возвращает размер буфера
|