Being able to do "where query_time_ms > 5000" and then seeing the query has made some of my systems incredibly debuggable¹.
Or just finding a failing request with "where response_code = 500". Yeah, I can "grep 500", but you would be shocked at how often those characters occur by happenstance in logs "grep ' 500 '" is a bit closer but … you're just dancing around a solution engineered to do the job: structured logs.
¹and then finding out someone drew a rather large bounding box that managed to be centered precisely between and encapsulate both Philly & NYC. This kills the DB.
Unfortunately with most SaaS metric services, your credit card does not scale to support infinite dimensions of data correlation.
Tagging a high cardinality value like a customer ID for example would quickly blow out your bill.
Otherwise, it's hard to convert a stack trace into a metric ;) But you can process the logs to generate a metric about the frequency of stack traces.
Ditto for logs telling you "user Foo doesn't have permissions for that operation". Again, you can make a metric about "user permissions failure" but you still need the log to know that it was user Foo.