logging-log4net-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dominik Psenner (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (LOG4NET-290) Add Lambda-based ILog-Extensions (embedded log.IsEnabled)
Date Thu, 17 Oct 2013 11:23:44 GMT

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

Dominik Psenner commented on LOG4NET-290:

I expect that usage of this method will look like this:
??logger.DebugExt(() => string.Format("Total value is {0}", CalculateTotalValue());
After that it's much harder to extract actual arguments of template.
I understand that it is just my opinion and my case, but it was so good that log4net keeps
these things (template and args) separated and I was impressed about it.

As I see it, this signature is there for another purpose, namely to create objects that can
be passed into custom object renderers such as:

logger.DebugExt(() => new MyCustomLogObjectBasedOn(otherObjectFoo, otherObjectBar))

without requiring to write:

  logger.Debug(new MyCustomLogObjectBasedOn(otherObjectFoo, otherObjectBar))

but still getting the performance benefits of lazy object instantiation.

whereas this:

{quote}logger.DebugExt(() => string.Format("Total value is {0}", CalculateTotalValue());{quote}

will be written as:

{quote}logger.DebugFormat("Total value is {0}", CalculateTotalValue()){quote}


{quote}logger.DebugFormatExt("Total value is {0}", CalculateTotalValue()){quote}

> 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
>            Assignee: Dominik Psenner
>             Fix For: 1.2.12
>         Attachments: LOG4NET-290-doc.patch, LOG4NET-290.patch
> 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 was sent by Atlassian JIRA

View raw message