Defects in production application software that process a large volume of requests via frequently created short-lived threads, such as applications implemented on modern Web application servers, are notoriously difficult to correct.
Development teams that build application software typically implement a configurable logging facility that produces log statements that are persisted to a file, or to a database. These logging facilities usually allow various levels of logging. At debug levels, the typical logging facility produces a detailed log. At production levels, typically only a health check or detected error conditions are logged.
The statements captured in a debug level log are invaluable when diagnosing the cause of unexpected errors especially those caused by defects in the software itself. However, if production software were to log debug level statements, the resulting performance degradation caused by persisting the log would be prohibitive. As production software executes more threads, the multiple threads would exacerbate the performance degradation.
Thus, there is a significant need for a system and method for improving retention of error information (error logging) that overcomes the above disadvantages and shortcomings, as well as other disadvantages.