Documentation

Shared log readiness

Avoid repeating the same readiness probe on every process.

When to use this

Use this pattern when several services print the same startup signal. Instead of repeating the same [process.readiness] block everywhere, define it once under [global.readiness].

Example

[global]
log_mode = "both"
log_format = "json"

[global.readiness]
type = "log"

[global.readiness.ready]
stream = "stdout"
pattern = "service_ready"

[[process]]
name = "billing-public"
command = "./tools/run_service.sh billing-public"

[[process]]
name = "billing-worker-rollup"
command = "./tools/run_service.sh billing-worker-rollup"

[[process]]
name = "billing-grpc"
command = "./tools/run_service.sh billing-grpc"

Why this works

Each process inherits global.readiness. This keeps large service lists short and makes the contract explicit: a service is ready when it prints service_ready on stdout.

This works best when all services are wrapped by a common launcher or framework that emits the same startup event.

Defaults involved here

  • process.readiness: inherits global.readiness
  • ready.stream: default stdout, shown explicitly here for clarity
  • instances: default 1
  • show_timestamps: effective default true
  • log_dir: default .vectron/logs

What to customize

  • Replace service_ready with the exact ready event emitted by your services.
  • Use a process-level readiness override for services that need a different signal.
  • Keep the pattern narrow enough that normal log lines cannot accidentally mark a service ready.

See also