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>