Right. When dealing with anything OOB, your best best probably is to query the BP database directly. The biggest problem with this is that the structure is almost overly relational, so the joins and queries get complex very quickly.
An alternative to this, may be to create a separate DB/table just to dump custom logs to. We wrote an API in PHP that BP just feeds JSON data to to store disposition and live status data. Since it's in one table, it's incredibly easy to query and read. Though this solution may only work if you don't need to have a fine amount of granularity in your logs, such as what you'd get from enabling stage logging on all stages of a process/object.