Can you explain how I can analyze Simba logs?


A typical Simba driver log line to would like like below
Feb 21 20:17:16.525 TRACE 1542911745 Simba::ODBC::Statement::SQLFetch: +++++ enter +++++

One can use regular expression based match to parse this log line to split the fields to derive meaningful insights.

For example, the fields can be split into
- timestamp
- loglevel
- pid
- message

The last message field is a long string which encapsulates a lot of important information but can be classified as below by splitting this further based on the :: delimiter.
- Namespace
- Class
- Method
- Details


There are 2 types of Simba logs
Connection Logs - Useful for getting connection attributes like agent, driver versions, operation status calls, connection failures, SSL errors etc
Driver Logs - This helps to analyze actual details around data fetch performance.

Some examples to derive meaningful insights from connection logs
Extract unique query identifier using keyword search within the message for "THandleIdentifier" or a guid pattern

Some examples to derive meaningful insights from driver logs
How long did an actual data fetch block take can be inspected using the time difference between the blocks.
SQLFetch*Enter
SQLFetch*Exit

Within each fetch block, you can look for below log lines to understand if it was a row-by-row fetch if you see a log of SQLGetData blocks.
SQLGetData*Enter
SQLGetData*Exit

There is other miscellaneous information logged by Simba driver for preceding requests such as closing a query or a session where an actual identifier needs to be sent along with the request, think of it as a payload for a REST API post request where you also need to send a payload along with the request.

Overall, deriving meaningful information from the Simba driver logs require a bit of analysis
before actually realizing the benefits of such analysis, most of the details are cryptic.

Brainstorming other ideas with Simba product team would be fantastic.