# Presto 316 Documentation

## 11.8. Event Listener

Presto supports custom event listeners that are invoked for the following events:

- Query creation
- Query completion (success or failure)
- Split completion (success or failure)

This functionality enables development of custom logging, debugging and performance analysis plugins. In a Presto cluster, only a single event listener plugin can be active at a time .

## Implementation

`EventListenerFactory` is responsible for creating an `EventListener` instance. It also defines an `EventListener` name which is used by the administrator in a Presto configuration. Implementations of `EventListener` implement methods for the event types they are interested in handling.

The implementation of `EventListener` and `EventListenerFactory` must be wrapped as a plugin and installed on the Presto cluster.

## Configuration

After a plugin that implements `EventListener` and `EventListenerFactory` has been installed on the coordinator, it is configured using an `etc/event-listener.properties` file. All of the properties other than `event-listener.name` are specific to the `EventListener` implementation.

The `event-listener.name` property is used by Presto to find a registered `EventListenerFactory` based on the name returned by `EventListenerFactory.getName()`. The remaining properties are passed as a map to `EventListenerFactory.create()`.

Example configuration file:

    event-listener.name=custom-event-listener
    custom-property1=custom-value1
    custom-property2=custom-value2