Event Listener module
Job module
Language module
Macro Module
Theme module
Web UI modules
Workflow module
XWork-WebWork module

Rate this page:

Descriptor based Event Listener


Confluence 1.4 and later


In Confluence 3.3 and later, the preferred approach is to use annotation-based events with Atlassian Spring Scanner. More information and examples are on Event Listener module page.

The Listener Plugin XML

Each listener is a plugin module of type 'listener'. It is packaged with whatever Java classes and other resources the listener requires to run. Here is an example of atlassian-plugin.xml file containing a single listener:

<atlassian-plugin name='Optional Listeners' key='confluence.extra.auditor'>
        <description>Audit Logging</description>
        <vendor name="Atlassian Software Systems" url="http://www.atlassian.com"/>

    <listener name='Audit Log Listener' class='com.example.listener.AuditListener' key='auditListener'>
        <description>Provides an audit log for each event within Confluence.</description>

The listener module definition has no configuration requirements beyond any other module. You just need to give it a name, a key, and provide the name of the class that implements the listener.

Example class

Below is an example of an EventListener that listens for the LoginEvent and LogoutEvent.

package com.atlassian.confluence.extra.userlister;

import com.atlassian.confluence.event.events.security.LoginEvent;
import com.atlassian.confluence.event.events.security.LogoutEvent;
import com.atlassian.event.Event;
import com.atlassian.event.EventListener;
import org.apache.log4j.Logger;

public class UserListener implements EventListener {
    private static final Logger log = Logger.getLogger(UserListener.class);

    private Class[] handledClasses = new Class[]{ LoginEvent.class, LogoutEvent.class};

    public void handleEvent(Event event) {
        if (event instanceof LoginEvent) {
            LoginEvent loginEvent = (LoginEvent) event;
            log.info(loginEvent.getUsername() + " logged in (" +  loginEvent.getSessionId() + ")");
        } else if (event instanceof LogoutEvent) {
            LogoutEvent logoutEvent = (LogoutEvent) event;
            log.info(logoutEvent.getUsername() + " logged out (" +  logoutEvent.getSessionId() + ")");

    public Class[] getHandledEventClasses() {
        return handledClasses;


You can find a more detailed example with sample code in Writing an Event Listener Plugin Module.

Rate this page: