It is possible to pipe error messages in batchmode to a file (for example).That is nice but the output is pretty useless for most error messages.For example you get a logfile with "Invalid handle. Not initialized or points to a deleted object. (3135)" in it.This is completely useless in a big application.When debug-alert is active the stack-tracke should also be piped out so we have a chance to find the bug.
You can also use -clientlog to log the error messages. That'll write out the stack trace if you start the session with -debugalert. (And AFAIK also includes -errorstack where appropriate)
You are correct but this has the downside of creating a logfile per session, so when you have lets say 1000 sessions over a period of time with only one that writes an error you have 999 Logfiles with no useful info in them and one with actual useful information. This makes it very hard to see if everything works fine.