The eAudit4j library provides a simple and pluggable solution for auditing in Java. This library uses the concept of "audit streams", with a stream being comprised of one or more "audit processors". An application can configure an unlimited number of audit streams, each with a different configuration. When an application wants to audit an event, it will create and populate an "Event" instance, and then submit the event to the audit stream for processing and persitance. Depending on the audit stream configuration and the processors being used in the audit stream configuration, processing my be synchronous or asynchronous, and utilize different security features.