On 2012/11/23 (Nov), at 3:09 PM, Matthew Toseland wrote:
> The reason for this is generating the strings (and GCing them) can use a lot
> of CPU: it's vital that if logging is turned off for that class then it not
> do *anything*. [...] I'd be interested to know if any of the standard logging
> solutions have an answer for this...
slf4j includes a special marker where it injects logging arguments, so that:
(1) Object.toString() is not called unless the log line is actually being
appended, and
(2) The string building (as you mentioned) is not performed unless the log line
is actually appended.
The usage is similar to log4j, like this:
log.info("received '{}' from {}", packet, peer);
The cost/benefit trade off is approximately one function call versus cleaner
code; since it's a facade, you're not pinned to one log facility, and I know
for a fact that log4j (which is compatible with slf4j) has per-class log levels
(which you also mentioned).
--
Robert Hailey
_______________________________________________
Devl mailing list
[email protected]
https://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl