package ktypes

import (
	. "gitp78su.ipnodns.ru/svi/kern/v3/krn/kalias"
)

// ILogMsg -- сообщение лога
type ILogMsg interface {
	// CreateAt -- когда создано
	CreateAt() ATime
	// Level -- уровень сообщения
	Level() string
	// Msg -- текст сообщения
	Msg() string
	// String -- форматированная строка
	String() string
}

// ILogBus -- публикует в топики логи
type ILogBus interface {
	// DebugAdd -- добавляет топик для отладочного сообщения
	DebugAdd(topic ATopic, bus IBusClient)
}

// ILogBuf -- буферизованный лог для диагностики
//
//	Буфер для Error -- отдельный
type ILogBuf interface {
	// Debug -- сообщение отладки
	Debug(fMsg string, args ...any)
	// LogBus -- возвращает объект публикации в шину
	// LogBus()ILogBus
	// Info -- информационные сообщения
	Info(fMsg string, args ...any)
	// Warn -- предупреждающие сообщения
	Warn(fMsg string, args ...any)
	// Err -- сообщения об ошибках
	Err(fMsg string, args ...any)
	// Get -- возвращает сообщение по номеру (0..99)
	Get(num int) ILogMsg
	// GetErr -- возвращает сообщение ошибки по номеру (0..99)
	GetErr(num int) ILogMsg
	// Size -- возвращает размер лога
	Size() int
	// IsTerm -- возвращает признак логирования в терминал
	IsTerm() ISafeBool
}
