# `Statifier.Effect.Log`
[🔗](https://github.com/riddler/statifier-ex/blob/v2.0.0/lib/statifier/effect/log.ex#L1)

Payload for `{:log, %__MODULE__{}}` - spec 4.7's `<log>`. `label` is the
`label` attribute (`nil` when the element omits it); `value` is the
resolved `expr` (or `nil` for a label-only `<log>`).

`c_index` identifies the `<log>` content node (constraint 3, never a
compiled content-node struct); a bare `c_index` alone is not enough to
correlate the log back to its place in the document, the same gap
`Statifier.Event.Cause`'s post-review correction found for `origin`
(`lib/statifier/event/cause.ex:13-26`) - it resolves to the node's own
`Location` but names nothing about which `<onentry>`/`<onexit>` block or
transition emitted it - so `owner` rides alongside it. `macrostep`/
`microstep`/`round` are the counters as they stood when the log ran.
This is the only effect the interpreter produces today.

# `owner`

```elixir
@type owner() :: Statifier.Machine.Content.owner()
```

Which block emitted the log - `Statifier.Machine.Content.owner/0`.

# `t`

```elixir
@type t() :: %Statifier.Effect.Log{
  c_index: non_neg_integer() | nil,
  label: String.t() | nil,
  macrostep: non_neg_integer(),
  microstep: non_neg_integer(),
  owner: owner() | nil,
  round: non_neg_integer(),
  value: term()
}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
