Reporting pattern

How Axis code should report diagnostics and exceptions.

Pattern

Wrap meaningful work in a diagnostics scope, then capture exceptions before rethrowing.

using (AxisDiagnostics.BeginScope(new AxisDiagnosticContext {
  JobId = jobId,
  SimulationId = simulationId,
  Operation = "simulation.offline_batch"
})) {
  AxisDiagnostics.Info("Queued offline simulation.", "job-queued", AxisDiagnosticKind.Job);
}
try {
  RunSimulation();
} catch (Exception ex) {
  AxisDiagnostics.CaptureException(ex, "Simulation failed.", "simulation-failed", AxisDiagnosticKind.Simulation);
  throw;
}