I am working on a system that handles authentication/authorization, and needs to keep track of the attempts of individuals logging in, making changes to the permissions/users, failed attempts, etc. We want to be able to parse this information into a database for further analysis/retrieval at a later time.
In our current implementation, we are using a home-brewed standard that is logged using a logging framework (Log4j in this case, but that is not what is important). Is a Logging framework the right mechanism to keep track of this information? It seems to me like it isn't; I had always understood logging to be a form of autopsy for the code - more to tell what happened when for purposes of debugging etc. This seems more like a reporting mechanism to me. Are there any standards for this type of a problem? Are there standard solutions/formats that people use? Is using a logging framework the right solution for this, or is there a better way to handle this type of data? What sources can I reference when looking at this information and presenting it to the stakeholders?
I should note - the data that is being logged is already being filtered based on compliance/security standards (no passwords, etc) and all of the logging occurs in our internal environment. I am more looking for a way that we can manage the change information of the authentication and authorization system.
It seems like you are using log4J for auditing (and probably for logging diagnostic or tracing information as well). To answer your question:
the straightforward answer is "No, a logging framework is not the right mechanism". There are certain attributes, which if present in a logging framework, would lend it the capability of being used as an audit framework.
Some of these requirements are presented below, and log4j can be used to cater to some of these. This is not exhaustive, and I would recommend you to look at the implementation of auditing frameworks (like LAUS) to derive a more comprehensive list.