I've written an article detailing an approach to audit logging that utilizes the TopLink Essentials extended API. The solution utilizes a listener that is invoked on specific @Entity operations, resulting in a single class to manage logging persistence, and a resulting code base free of explicit logging calls. More on JPA Audit Logging.