On Tue, Mar 06, 2012 at 07:25:23PM -0500, Jonathan M Davis wrote: > On Tuesday, March 06, 2012 13:08:42 Brad Roberts wrote: [...] > > I still believe pretty strongly that the logger must not affect > > application flow, ie, not throw or exit the app. From the feed back, > > I am not alone in thinking that. I don't believe that "well, don't > > use those log levels" is a workaround if for no other reason that > > there will be libraries that contain them and that becomes a "dont > > use those libraries either" response. > > Agreed. The logging functions should _not_ throw. [...]
+1. Logging functions are for ... logging? Not for managing errors. Leave it up to the user to define something like the following, if they're so inclined: void logAndAbort(T...)(string fmt, T args) { critical(fmt.format(args)); throw new CriticalError(...); } One shouldn't have to write a try/catch block just so one can log a critical message and continue doing whatever it is needs to be done. (For example, you might want to log a critical condition immediately to ensure the sysadmin sees the message, before proceeding to attempt self-recovery that *may* fail and crash the system, and thereby lose the ability to log a message.) Let the user decide whether or not to throw. T -- Why have vacation when you can work?? -- EC