Logging and Data Auditing

All system modules benefit from multiple available methods of logging operations and data. Multiple methods are present so their space and performance profiles are adequate to the function they provide.

Error logging

All system services and applications have built in a configurable error logging system. This logging system produces structured messages that are then streamed in an efficient way into an exporter. As default this exporter is simply the filesystem and will produce log files that roll over upon reaching maximum size. However it can be configured to other format or external services.

Tracing

There is a specialized kind of logs that produce informational messages. These kinds of information can be useful to debug the a system while its in full operation. This can, an will, produce a very large stream of information that is not easy to store and may even impact performance. Hence the tracing system is turned off by default and should only be enabled on demand, supervised, and for short periods of time.

Operations profiling

Some business operations and even general actions like logging into the application can be considered critical, and have a log trail associated with their activation. This log trail is persisted into the database for later auditing by system administrators or application managers.

Data timestamping

All user operated records are timestamped for creation and modification. This timestamp includes the user that performed the modification and the datetime of that modification. This information can be visible directly in the user interface.

Changed Data Tracking

In some business critical records sometimes is not enough to know when something changed, but there is also the need to know precisely which data fields were changed and to what values. These changes are tracked at the database level so even internal Sql changes are caught and logged for later auditing.

Data history

In other situations the business itself is built over the changing of the data. For this cases the application also provides auxiliary temporal tables that the user interface can browse and use directly in the application. While this is not directly applied for data auditing it can solve hybrid use cases that are common.