| Section | Core | Python | Py# | TypeScript | TS# | PHP | PHP# | Go | Go# |
|---|---|---|---|---|---|---|---|---|---|
| Overview | — | ✓ | 1 | ✓ | 1 | ✓ | 1 | ✓ | 1 |
| Logging / Replay-Aware Logging | — | ✓ | 2 | ✓ | 2 | ✓ | 2 | ✓ | 2 |
| Customizing the Logger | — | ✓ | 2 | ✓ | 3 | ✓ | 3 | ✓ | 3 |
| OpenTelemetry Integration | — | — | — | — | — | — | — | ||
| Metrics | — | ✓ | 3 | ✓ | 4 | — | — | ✓ | 4 |
| Search Attributes (Visibility) | — | ✓ | 4 | — | — | ✓ | 4 | ✓ | 5 |
| Debugging with Event History | — | — | — | — | — | — | — | ||
| Best Practices | — | ✓ | 5 | ✓ | 5 | ✓ | 5 | ✓ | 6 |
| Language | Status | Notes |
|---|---|---|
| Python | ✓ reference | — |
| TypeScript | ✓ aligned | Removed verbose sections |
| PHP | ✓ aligned | PSR-3 logging; Metrics omitted (uses RoadRunner pipeline, not SDK metrics API) |
| Go | ✓ aligned | workflow.GetLogger, slog integration, Tally/Prometheus metrics |
Go-specific notes:
- Logging:
workflow.GetLogger(ctx)for replay-safe workflow logging;activity.GetLogger(ctx)for activity logging - Customizing: Go 1.21+ supports
log.NewStructuredLogger(slog.New(...))viaclient.Options.Logger; also supports customlog.Loggerinterface - Metrics: Go uses Tally library (
go.temporal.io/sdk/contrib/tally) for Prometheus integration;client.Options.MetricsHandler - Tracing: Go supports OpenTelemetry, OpenTracing, and Datadog via
contrib/packages and interceptors - Search Attributes: Go includes visibility/search attributes in observability (like Python, unlike TS)
Intentionally missing (—):
- Core column: no core observability.md exists (implementation-specific)
- OpenTelemetry / Debugging: Removed as too detailed
- Search Attributes: Python/Go include; TS keeps in data-handling.md
Order alignment: ✓ Aligned — Go# monotonically increases
Style alignment: ✅ Complete (Python, TypeScript)