title: JSF web application user logging. How to?
body: <p>The administrator of the web application I am working on, asks for a 'I wanna know everything' <strong>log</strong>. He wants to track all what the other users did when they were connected (logged in) to the web app :</p>
  
  <ul>
  <li>What pages he/she visited.</li>
  <li>What actions he/she performed.</li>
  <li>On what entities (JPA Entities) he/she performed actions.</li>
  <li>At what exact time she/he performed a given action if successful.</li>
  <li>What attribute of the a given record he/she modified.</li>
  <li>The user principals of this user.</li>
  </ul>
  
  <p>All I could do now, is export a CSV file where the administrator finds the <strong>user principals</strong>, the time this user logged in and logged out.
  I also created an example <strong>history</strong> table in database populated by EclipseLink Customizer to track changes for a corresponding table. (The problem with this <strong>EclipseLink customizer</strong> is that it is <strong>not flexible</strong>, because database tables are <strong>changing with time</strong> (adding/removing attributes) and so are their corresponding entities. And the user does not want to modify things two times (one time in the main table and the second time in the history table)!</p>
  
  <p>Could something like a third library 'log4j' do that? </p>
  
  <ul>
  <li>Is there any alternatives, solutions, or better practices related to my issu!?</li>
  </ul>
  
  <p>Best regards.</p>