Documentation ¶
Index ¶
- Constants
- Variables
- func Autovacuum(ctx context.Context, dbc db.Connection, journalID, crashID uint16)
- func RegisterType(types ...ModelType)
- type API
- type CrashHandler
- type Cursor
- type Driver
- type Entry
- type Factory
- type GlogLogger
- type Logger
- type Model
- type ModelType
- type Provider
- type Stage
- type StageAPI
- type StageMonitoring
- type StrLogger
- type ViewMonitoring
Constants ¶
const ( ModelTypeUnknown journalModels = 0 ModelTypeCrash journalModels = 1 )
Типы для моделей по-умолчанию
const ( IndexStart uint16 = 0x0001 IndexModel uint16 = 0x0002 )
Константы индексов
Variables ¶
var ( ErrSelect = errx.New("Ошибка загрузки записи журнала").WithReason(errx.ErrInternal) ErrInsert = errx.New("Ошибка сохранения записи журнала").WithReason(errx.ErrInternal) ErrNotFound = errx.New("Не найдены подходящие записи журнала").WithReason(errx.ErrNotFound) ErrValidate = errx.New("Ошибка валидации входных данных").WithReason(errx.ErrBadRequest) )
Ошибки реализаций
Functions ¶
func Autovacuum ¶ added in v1.0.11
func Autovacuum(ctx context.Context, dbc db.Connection, journalID, crashID uint16)
func RegisterType ¶ added in v1.0.4
func RegisterType(types ...ModelType)
RegisterType - регистрация типа для корректной загрузки данных из БД
Types ¶
type API ¶
type API struct { ID string `json:"id,omitempty"` Start time.Time `json:"start"` Total time.Duration `json:"total"` Name string `json:"name"` User string `json:"user,omitempty"` Tags map[string]string `json:"tags,omitempty"` Keys map[string]string `json:"keys,omitempty"` Stages []*StageAPI `json:"stages"` }
type CrashHandler ¶ added in v1.0.19
CrashHandler - обработчик вызываемый при Crash
type Cursor ¶
type Cursor interface { ID() string Empty() bool // NextPage - Подгрузка следующей страницы (но, возможно, с изменением размера) NextPage(size uint, services ...string) ([]Model, error) }
Cursor - модель для крупных выборок с постраничкой
type Driver ¶
type Driver interface { /* InsertEntry - сохранение записи журнала в БД. */ InsertEntry(*Entry) error }
Driver - помощник сохранения журнала для провайдера
func NewFdbxDriver ¶ added in v1.0.7
func NewFdbxDriver(dbc db.Connection, journalID, crashID uint16) Driver
NewFdbxDriver - конструктор драйвера для сохранения через fdbx/v2
type Entry ¶
type Entry struct { ID string Host string Service string Start time.Time Total time.Duration Chain []*Stage Debug map[string]string }
Entry - основное представление записи журнала
type Factory ¶
type Factory interface { /* New - конструктор новой модели для сохранения */ New() Model /* ByID - получение записи журнала по идентификатору. * id не должен быть пустым и валидируется как core.UUID * Если не найден, ErrNotFound * Если что-то пошло не так, ErrSelect */ ByID(id string) (Model, error) /* ByModel - получение всех записей журнала по конкретной модели */ ByModel(mtp ModelType, mid string) ([]Model, error) /* Cursor - загрузка существующего курсора */ Cursor(id string) (_ Cursor, err error) /* ByDate - формирование курсора перебора по дате */ ByDate(from, to time.Time, page uint, services ...string) (_ Cursor, err error) /* ByModelDate - формирование курсора перебора по модели и дате */ ByModelDate(mtp ModelType, mid string, from, to time.Time, page uint, services ...string) (_ Cursor, err error) /* ImportEntries - массовая загрузка сразу нескольких моделей */ ImportEntries(...*Entry) error }
Factory - поставщик моделей для работы в рамках транзакции
type GlogLogger ¶
type GlogLogger struct{}
func (*GlogLogger) Error ¶
func (l *GlogLogger) Error(tpl string, args ...interface{})
func (*GlogLogger) Print ¶
func (l *GlogLogger) Print(tpl string, args ...interface{})
type Logger ¶
type Logger interface { Print(tpl string, args ...interface{}) Error(tpl string, args ...interface{}) }
Logger - обертка для записи журнала в консольку
type Model ¶
type Model interface { /* Import - копирование основного представления в модель и сохранение в БД. */ Import(*Entry) error /* Export - основное представление записи журнала. */ Export(withCrash bool) (*Entry, error) /* ExportAPI - представление для выдачи журнала в файлах и пакетах */ ExportAPI(log Provider) *API /* ExportMonitoring - представление для выдачи журнала в мониторинге */ ExportMonitoring(log Provider) *ViewMonitoring }
Model - запись журнала в БД
type Provider ¶
type Provider interface { /* Print - простая текстовая запись, для отладки или обозначения контрольной точки в процессе. * txt - текст записи, возможно форматная строка * args - аргументы форматной строки, могут отсутствовать, если текст не требует форматирования * Вызов функции создает новую отметку времени в цепочке */ Print(txt string, args ...interface{}) /* Model - запись со ссылкой на какую-то модель в БД. * mtp - тип модели записи журнала, один из допустимых для логирования и поиска * mid - идентификатор модели, будет участвовать в поисковом индексе * txt - комментарий к записи, возможно форматная строка * args - аргументы форматной строки, могут отсутствовать, если текст не требует форматирования * Вызов функции создает новую отметку времени в цепочке * Если указан пустой идентификатор, то функция аналогична вызову Print */ Model(mtp ModelType, mid string, txt string, args ...interface{}) /* Crash - логирование ошибки в журнал с формированием и записью отчета. * err - любая ошибка, которая будет возвращена как внешняя * Если err = nil, то возвращается тоже nil * Ошибка логируется как модель с идентификатором типа core.ModelTypeCrash * В текстовый комментарий к модели идет содержимое err.Error() */ Crash(err error) *crash.Report /* Close - закрытие модели, запись в glog и сохранение с помощью фабрики. * Обязательно требуется вызов этого метода, иначе все записи будут потеряны */ Close() *Entry /* Clone - создание нового чистого провайдера, с теми же параметрами. */ Clone() Provider /* SaveOnlyError - пометка о том, что сохранять запись в БД при закрытии нужно только в случае ошибки */ SaveOnlyError(opt bool) /* Debug - общая запись значений для дебага, который записывается в каждую ошибку. В записях журнала дебаг не сохраняется. * Старые значения из карты не удаляются. * Повторяющиеся - перезаписываются последними данными. */ Debug(dbg map[string]string) /* OnCrash - установка обработчика, который будет вызываться при Crash, когда возвращаемый crash.Report не равен nil */ OnCrash(handler CrashHandler) }
Provider сборки и сохранения журнала
func NewProvider ¶
NewProvider - конструктор сборщика журнала.
* max - максимальный разрешенный уровень логирования для записей * crp - провайдер отчетов об ошибках * drv - реализация драйвера для сохранения записи журнала * log - реализация логгера для записи журнала в консольку или файл * srv - наименование сервиса, инициатора записей в журнале
type Stage ¶
type Stage struct { EnID string Text string Wait time.Duration Verb int Type int Fail *crash.Report }
Stage - основное представление отметки в записи журнала
type StageMonitoring ¶
type ViewMonitoring ¶
type ViewMonitoring struct { ID string `json:"id,omitempty"` Host string `json:"host"` Service string `json:"service"` Total string `json:"total"` Name string `json:"name"` User string `json:"user,omitempty"` Start time.Time `json:"start"` Time uint64 `json:"time"` Tags map[string]string `json:"tags,omitempty"` Keys map[string]string `json:"keys,omitempty"` Stages []*StageMonitoring `json:"stages"` }