Elapsed
Measure and log the elapsed duration of an operation without animations:
e := clog.Info().Elapsed("elapsed")
runMigrations()
e.Msg("database migration")
// INF ℹ️ database migration elapsed=2s
Use Elapsed when you want elapsed-time logging but don’t need a spinner, progress bar, or any visual animation. The elapsed field uses the same formatting, styling, and field type as animation Elapsed fields.
Finalising
Elapsed events can be finalised with Send (no message), Msg, or Msgf:
e := clog.Info().Elapsed("elapsed")
runMigrations()
e.Send()
// INF ℹ️ elapsed=2s
e = clog.Info().Elapsed("elapsed")
runMigrations()
e.Msg("migrations complete")
// INF ℹ️ migrations complete elapsed=2s
Field Positioning
Elapsed can appear anywhere in the field chain to control where the elapsed field is shown:
// Elapsed before other fields
e := clog.Info().Elapsed("elapsed").Str("env", "prod")
deploy()
e.Msg("deploy")
// INF ℹ️ deploy elapsed=12s env=prod
// Elapsed after other fields
e = clog.Info().Str("env", "prod").Elapsed("elapsed")
deploy()
e.Msg("deploy")
// INF ℹ️ deploy env=prod elapsed=12s
Custom Key
The key parameter controls the field name:
e := clog.Info().Elapsed("duration")
compile()
e.Msg("compile")
// INF ℹ️ compile duration=3s
Log Levels
Since Elapsed is a method on events, you control the level directly:
clog.Warn().Elapsed("elapsed").Msg("slow query")
// WRN ⚠️ slow query elapsed=5s
clog.Error().Elapsed("elapsed").Err(err).Msg("compile")
// ERR ❌ compile elapsed=3s error="syntax error"
Sub-loggers
Elapsed works on any logger instance:
logger := clog.With().Str("component", "db").Logger()
e := logger.Info().Elapsed("elapsed")
runQuery()
e.Msg("query")
// INF ℹ️ query component=db elapsed=1s
Elapsed Configuration
The elapsed field respects the same configuration as animation elapsed fields:
| Method | Default | Description |
|---|---|---|
SetElapsedPrecision | 0 | Decimal places (0 = 3s, 1 = 3.2s) |
SetElapsedRound | time.Second | Rounding granularity (0 disables rounding) |
SetElapsedMinimum | time.Second | Hide elapsed field below this threshold |
SetElapsedFormatFunc | nil (built-in) | Custom format function for elapsed durations |