You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4net-dev@logging.apache.org by "Curt Arnold (JIRA)" <ji...@apache.org> on 2011/08/31 05:45:09 UTC

[jira] [Commented] (LOG4NET-290) Add Lambda-based ILog-Extensions (embedded log.IsEnabled)

    [ https://issues.apache.org/jira/browse/LOG4NET-290?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13094285#comment-13094285 ] 

Curt Arnold commented on LOG4NET-290:
-------------------------------------

It looks the like original code was very concerned about the cost of boxing and unboxing an integer, array creation and a function call on calls when the level is higher than debug. If those were not of concern, you could simplify the call to 

log.DebugFormat("x: {0}", 123) 

You would not incur any formatting costs unless the logger was at debug or lower.

The LogMF and LogSF helper classes in log4j present a vararg like experience while avoiding the array creation and boxing costs for the most common calls. A call using LogMF would look like

LogMF.debug(log, "x: {0}", 123);

That call should have no array creation or boxing overhead.

Obtaining a formatter was a very expensive operation on Java. LogMF ended up having its own implementation of the simplest use patterns for MessageFormatter and only delegating to MessageFormat when the pattern was more complex.

It would be very interesting to see a profile of the current log4net ...Format method, compared to a lambda approach, compared to the LogMF approach.

> Add Lambda-based ILog-Extensions (embedded log.IsEnabled)
> ---------------------------------------------------------
>
>                 Key: LOG4NET-290
>                 URL: https://issues.apache.org/jira/browse/LOG4NET-290
>             Project: Log4net
>          Issue Type: New Feature
>          Components: Core
>    Affects Versions: 1.2.10
>            Reporter: Lars Corneliussen
>             Fix For: 3.5
>
>
> This statement:
>     if (log.IsDebugEnabled) log.DebugFormat("x: {0}", 123)
> Could be nicely shortened to:
>     log.Debug( m=>m("value= {0}", obj.Value) );
> I'm already apache committer (NPanday Incubator Project) and would be happy to help with this interface. The simplest thing would be to offer it as static Extension-Methods to ILog.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira