@Araq As "the guy who receives all logged errors as email" in my "day job" 
project, I must point out that you're wrong in your assumption; "... the 
process dies ..." is simply wrong in our case (and hopefully in many other Java 
apps; you must get _something_ for the cost of that gigantic heap requirement 
and stop-the-world GC). That might be one of the greatest strength of Java (it 
only dies if you want it to). When an exception comes, and I see literally 
1000s of occurrences every day (after merging repeated exceptions from the same 
client for the same operation), it is logged and, depending on the code 
location, some data might be thrown away, but the process just carries on (the 
exception to the rule is "corrupt Web-Start caches"). This applies in 
particular for OOM exceptions. I spent _ages_ making both our client and 
servers "OOM safe". Most of the time, when one client connection to a server 
causes an OOM, the other clients don't even notice, except the request might 
take longer due to a possible retry.

When I see some new exception in some place, I get the hotline to call the 
clients. About half of the time, the clients were _not aware_ that any 
exception occurred. That is in large part due to my personal contribution to 
the project. Corporate environment cares mostly about "client visible" errors. 
That is why dev time for deep refactoring is rarely granted. Of course, it 
could be different at other companies.

Considering logging to a DB, I’m kind of ambivalent. The “unspecified text 
format” is a pita (I’m also “the guy that has to grep errors in the logs”). But 
we log exclusively to local drives. Mainly, because local drives don’t randomly 
get overloaded or crash, as some remote DB might do. Also we never log so much 
that it becomes a bottle-neck, which could happen when logging to a (presumably 
SQL) DB. (I’ll eat a broom the day we are allowed to use Kafka ...)

Reply via email to