Metrics
Collects span timing data (p50/p95/p99) for performance monitoring.
{ metrics: true } (simple)
Add metrics: true to any config object. A per-logger MetricsCollector is created automatically and exposed as log.metrics.
typescript
import { createLogger } from "loggily"
const log = createLogger("myapp", [{ level: "debug", metrics: true }, console])
{
using span = log.span("query")
// ...
}
log.metrics.stats("myapp:query") // SpanStats | undefined
log.metrics.summary() // formatted string
log.metrics.all() // Map<string, SpanStats>Child loggers inherit the same collector:
typescript
const db = log.child("db")
{
using span = db.span("query")
// ...
}
log.metrics.stats("myapp:db:query") // same collectorwithMetrics(collector) (advanced)
Import from loggily/metrics. Use when you need a shared collector across multiple loggers or custom configuration.
typescript
import { withMetrics, createMetricsCollector } from "loggily/metrics"
import { createLogger } from "loggily"
const collector = createMetricsCollector()
const log = withMetrics(collector)(createLogger("myapp"))
// log.metrics === collector
{
using span = log.span("query")
// ...
}
collector.stats("myapp:query") // { count, min, max, mean, p50, p95, p99, total }
collector.summary() // formatted string
collector.reset() // clear dataAPI
| Export | Description |
|---|---|
{ metrics: true } | Config key: auto-creates collector on log.metrics |
createMetricsCollector(maxEntries?) | Create a standalone collector (default 1000 entries per span) |
withMetrics(collector) | Wrap a logger to record spans to a collector |
SpanStats
typescript
interface SpanStats {
count: number
min: number
max: number
mean: number
p50: number
p95: number
p99: number
total: number
}