# Class LittleGhost::Events::Reporter

Documentation version: Edge

Canonical HTML: https://littleghostai.org/docs/LittleGhost/Events/Reporter.html

Thread-safe event publisher with process-wide and fiber-scoped listeners.
Reporters start without listeners so applications opt into their preferred
event destination, including `ConsoleListener` for JSON-line diagnostics.

## Inheritance

`LittleGhost::Events::Reporter < Object`

## Class methods

<a id="method-c-new"></a>
### `.new`

```ruby
.new(listeners: [])
```

Starts with `listeners` in subscription order.

## Instance methods

<a id="method-i-context"></a>
### `#context`

```ruby
#context()
```

Copies the event context active in the current execution.

<a id="method-i-emit"></a>
### `#emit`

```ruby
#emit(level, name, payload = {})
```

Delivers an event and returns a detached copy of its complete hash.

<a id="method-i-subscribe"></a>
### `#subscribe`

```ruby
#subscribe(listener, &filter)
```

Subscribes `listener`. The optional block filters copied event hashes.

<a id="method-i-unsubscribe"></a>
### `#unsubscribe`

```ruby
#unsubscribe(listener)
```

Unsubscribes every entry matching `listener`.

<a id="method-i-with_context"></a>
### `#with_context`

```ruby
#with_context(attributes)
```

Adds attributes to events emitted while the block runs.
