Lazy evaluation is trivial. Log.info("{1} did {2}", new Object(){ public String toString() { return ITEM_1; } }, new Object(){ public String toString() { return ITEM_2; } } );
Garbage collection with short-lived objects costs next to nothing. On 22/03/12 21:15, Zlatin Balevsky wrote: > Constructing the logging strings is half of the problem. The amount of > garbage > they will generate will result in significantly more time in garbage > collection > pauses. > > Unless you figure out a way to mimic lazy evaluation you have to live with the > isLoggable predicates. varargs are not an option either because they also > create garbage. > > On Mar 22, 2012 8:11 AM, "Marco Schulze" <marco.c.schulze at gmail.com > <mailto:marco.c.schulze at gmail.com>> wrote: > > > > On 22-03-2012 08:50, Matthew Toseland wrote: > > On Wednesday 21 Mar 2012 21:18:37 Marco Schulze wrote: > > There are basically two big concerns regarding logging in fred: > > - Readability and code clutter, which was my original questioning; > - Raw throughput, as raised by toad. > > Point 1 could mostly be solved by removing any traces of logMINOR > and > logDEBUG on all but the few places where generating messages to be > logged brings noticeable slowdown. That'd be enough, but, > personally, > the mess that the logging backend is does warrant a replacement. > According to toad, the current system needs log{MINOR,DEBUG} to > function > in a timely manner. Based on this, I think we all agree a > replacement is > desirable. > > Logging has a few additional requirements: > > - Log rotation (possibly live); > - Reentrant; > - Per-class filtering; > - Specific information in log (class-name, for example). > > Now, _any_ library which fits would make me happy, as long as they > agree > to two points: > > - Either lightweight or with optional features. Else, it would > only > transfer bloat to freenet-ext.jar. For example: log2socket, config > management and multiple logging instances; > - Implementable in a few LoC. Specially, it shouldn't need > specialized > Formatter and Writer. > > Plus, it should be fast. > > From the quick research I made (yep, too many lists): > > - SLF4J already fails on point one: it is simply a wrapper; > - The Java logging API fails on point two: specialized classes > would > have to be written to deal with log rotation, per-class filtering > and > formatting, plus a wrapper for Logger.{info,warning,...}() > methods. > Exactly the same as a custom logger, with one more dependency and > using > more LoC; > > No dependancies, it's part of the JDK, isn't it? > > More classes need to be loaded at startup. It's just me thinking too much. > > > However, if it's not a clearer/simpler API, it probably doesn't make > much sense. > > - Log4J seems to fail on point one - it only lacks a button that > brings > back the dead. It seems interesting, and I haven't dropped this > yet. > > In either case (custom or external), log* would be banished. > Forever. > > I don't follow. You object to using a separate logs folder? > > log* == log{MINOR,DEBUG}, not the logs folder. > _________________________________________________ > Devl mailing list > Devl at freenetproject.org <mailto:Devl at freenetproject.org> > https://emu.freenetproject.__org/cgi-bin/mailman/listinfo/__devl > <https://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl> > > > > _______________________________________________ > Devl mailing list > Devl at freenetproject.org > https://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl -- GPG: 4096R/5FBBDBCE https://github.com/infinity0 https://bitbucket.org/infinity0 https://launchpad.net/~infinity0 -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 900 bytes Desc: OpenPGP digital signature URL: <https://emu.freenetproject.org/pipermail/devl/attachments/20120322/c9893157/attachment.pgp>