From vmkteam-developer
Embeds structured logging into Go app structs using embedlog, with Prometheus metrics for info/error events, JSON/text formats, and source locations. Useful for production monitoring and dev debugging.
npx claudepluginhub vmkteam/claude-plugins --plugin vmkteam-developerThis skill uses the workspace's default tool permissions.
embedlog (https://github.com/vmkteam/embedlog) — библиотека логирования для Go, предназначенная для встраивания в структуры приложения.
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
embedlog (https://github.com/vmkteam/embedlog) — библиотека логирования для Go, предназначенная для встраивания в структуры приложения.
embedlog.Loggerapp_log_events_total (info/error)type MyService struct {
embedlog.Logger
repo db.EntityRepo
}
func NewMyService(logger embedlog.Logger, repo db.EntityRepo) *MyService {
return &MyService{
Logger: logger,
repo: repo,
}
}
// Использование
func (s *MyService) Process(ctx context.Context) error {
s.Print("processing started")
// ...
if err != nil {
s.Error("processing failed", "err", err)
return err
}
s.Print("processing completed", "count", count)
return nil
}
// Production (JSON)
logger := embedlog.NewLogger(os.Stdout, os.Stderr, true) // json=true
// Development (text, цветной)
logger := embedlog.NewDevLogger()
logger.Print(msg string, args ...any) // info → stdout
logger.Error(msg string, args ...any) // error → stderr
logger.PrintOrErr(err error, msg string) // если err != nil → Error, иначе Print
Автоматически экспортируются:
| Метрика | Labels | Описание |
|---|---|---|
app_log_events_total | type="info" | Количество info-логов |
app_log_events_total | type="error" | Количество error-логов |
Полезно для алертов на рост error rate.
rpc.Use(
zm.WithSLog(logger.Print, zm.DefaultServerName, nil),
zm.WithErrorSLog(logger.Error, zm.DefaultServerName, nil),
)
// dblog.go — логирование SQL-запросов
zm.WithSQLLogger(dbo.DB, isDevel, allowDebugFn(), allowDebugFn())
app_log_events_total{type="error"}s.Print("order created", "orderId", id, "total", total) — не конкатенация строк