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"`
}