@Override
    public void handleEvent(@Nonnull Object event) throws GuacamoleException {

        // General object creation/modification/deletion
        if (event instanceof DirectorySuccessEvent)
            logSuccess((DirectorySuccessEvent<?>) event);
        else if (event instanceof DirectoryFailureEvent)
            logFailure((DirectoryFailureEvent<?>) event);

        // Login / logout / session expiration
        else if (event instanceof AuthenticationSuccessEvent)
            logSuccess((AuthenticationSuccessEvent) event);
        else if (event instanceof AuthenticationFailureEvent)
            logFailure((AuthenticationFailureEvent) event);
        else if (event instanceof UserSessionInvalidatedEvent)
            logger.info("{} has logged out, or their session has expired or "
                    + "been terminated.", new RequestingUser((UserSessionInvalidatedEvent) event));
        else if (event instanceof AuthenticationRequestReceivedEvent)
            logger.trace("Authentication request received from {}",
                    new RemoteAddress(((AuthenticationRequestReceivedEvent) event).getCredentials()));

        // Application startup/shutdown
        else if (event instanceof ApplicationStartedEvent)
            logger.info("The Apache Guacamole web application has started.");
        else if (event instanceof ApplicationShutdownEvent)
            logger.info("The Apache Guacamole web application has shut down.");

        // Unknown events
        else
            logger.debug("Ignoring unknown/unimplemented event type: {}",
                    event.getClass());

    }
Logs that authentication failed for a user.

@param event
    The event describing the authentication attempt that failed.
guacamole/src/main/java/org/apache/guacamole/event/EventLoggingListener.java