<div dir="ltr"><div>Comments on comments.  And to be clear, this is just me wanting everything to be amazing - I'm incredibly glad to have any logging framework at all, and will use what I can get.</div><div><br></div>
<div> >> Allow custom info to be inserted based on logger context.<br><div> > don't think that this is a good way to good, complexity and speed wise.<br>
</div><div><br></div><div>Configurable/custom logging output is required for (most) complicated systems.  Aside from having to fit into a pre-existing log format, think logging a request id for every action that happens within the context of a request.  You can manually plum in the info everywhere and pass it to the logger, but it is much easier/cleaner to be able to set info on a logger context.  For some cases this is the only reasonable option.</div>
<div>Like: <a href="http://logback.qos.ch/manual/mdc.html">http://logback.qos.ch/manual/mdc.html</a></div><div><br></div><div>>> * Pass an exception to logger directly, have it output in message<br>>> depending on configuration.  Pretty vs. short vs. all-one-line for<br>
>> automated log parsing.</div><div>> I think format("%s", someException) already calls toString on someException (I need to this.)<br>
</div><div><br></div><div>I'm thinking of cases where the standard exception toString may not be appropriate, like when you need every log statement to occur only on one line for log parsing, perhaps with a shortened stack trace.  But still want to be able to run the same code in development and be able to look at logs without eyes bleeding.  It might be useful to include the API to take an exception directly, even if it doesn't actually do anything special without a custom logger implementation.</div>
<div>Like: <a href="http://logback.qos.ch/apidocs/ch/qos/logback/classic/Logger.html#error(java.lang.String">http://logback.qos.ch/apidocs/ch/qos/logback/classic/Logger.html#error(java.lang.String</a>, java.lang.Throwable)</div>
<div><br></div><div><br></div><div>> MultiLogger will come.<br>
</div><div><br></div><div>Excellent.</div><div>Obligatory logback link: <a href="http://logback.qos.ch/manual/appenders.html">http://logback.qos.ch/manual/appenders.html</a></div><div><br></div><div><br>>> * The 'critical' level seem extraneous - when would you use this instead of error or fatal?<br>
 > The system has tripped bad. Maybe some config file is not there, but some system env might to the trick.<br>
</div><div><br></div><div>If you have encountered a problem, is an error.  If you can't recover, is a fatal.  I can't think of a time when I would want to use critical where an error or fatal wouldn't be appropriate... personally, I'd rather have an explicit debug/trace level instead.</div>
<div><br></div><div>>> * Easy way to create logger per module, inheriting settings from logger hierarchy.</div><div>>> Associated way to manage loggers and their configuration.<br>
><br>>module myModule;<br>>Logger myModuleLogger;<br>>static this() {<br>>    myModuleLogger = new StdIOLogger();<br>>}</div><div><br></div><div>Yes, but.  Should be able to create a logger per module, and have it automatically fit into log hierarchy for configuration.  Example:</div>
<div><br></div><div>module foo -> has logger foolog</div><div>module foo.bar -> has looger barlog, child of foolog</div><div><br></div><div>Want to be able to configure log levels on foolog and have barlog inherit.  Useful for turning on/off log levels for my code but not changing log output from code I pull from elsewhere.  I'd say this is one of the most critical parts of an effective logging framework.  Making it easy/default gains a lot.</div>
<div>Like: <a href="http://logback.qos.ch/manual/architecture.html">http://logback.qos.ch/manual/architecture.html</a></div><div><br></div><div><br></div><div>Also:</div><div>I like log.error(foo) better than log(error, foo).  And the shed should be blue.</div>
<div></div></div><br></div>