logging-log4net-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dominik Psenner <dpsen...@gmail.com>
Subject Re: Injecting properties into LoggingEvent
Date Sat, 22 Oct 2016 17:29:22 GMT
What I am proposing here are a mere ideas that will need further
investigation. I have not tried any of these ideas. You will have to
prioritize these ideas based on your requirements.

A. Implement an extension class for the ILog interface
B. Implement a custom ILog interface implementation and a LoggerFactory.
C. Define custom loglevels
D. Use thread context properties altogether with custom format layouts
E. Log "complex" classes that hold your category information and find a way
to format them

There might be more things that you could do..

On 22 Oct 2016 5:31 p.m., "Nicholas Duane" <nickdu@msn.com> wrote:

> Is there a way for me to inject properties into a LoggingEvent?  I'm
> trying to accomplish this without the user (of log4net) doing anything
> special.  The only thing I could think of was wrapping loggers, and while
> I'm not against doing that it would have to be done via configuration as I
> don't want the user to have to do it programmatically.  Is there any way
> for me to inject a logger wrapper via configuration?
>
>
> The reason I'm looking to do this is that I would like to set a property
> on the LoggingEvent to use for filtering.  This property would be
> determined based on the level property.  I could simply use the level
> property for filtering, but I have other events which I generate which are
> all logged at the Emergency level but have a different value for this
> property so for them I'm using this property for filtering.  I don't have
> the same issue with these other events because they are logged via an
> extension method I provided on the ILog interface:
>
>
> public static class Logging
>
> {
>
>     public static void LogEvent(this ILog logger, Category category,
> IEvent evnt)
>
>     {
>
>         if ((category != null) && (evnt != null))
>
>             {
>
>             evnt.SetCategory(category.Name);
>
>             LoggingEvent le = new LoggingEvent(null,
> logger.Logger.Respository,
>
>                     logger.Logger.Name, Level.Emergency, evnt, null);
>
>             le.Properties["category"] = category.Name;
>
>             logger.Logger.Log(le);
>
>             }
>
>     }
>
> }
>
>
> So for instance when a user does the following:
>
>
> logger.Error("this is my error message");
>
> or
>
> logger.Warn("this is my warning message");
>
> or
>
> logger.Info("this is my info message");
>
>
> I would like to set the property "category" on the LoggingEvent to
> "criticalDiagnostic".  When they do:
>
>
> logger.Debug("this is my debug message");
>
> or
>
> logger.Trace("this is my trace message");
>
>
> I would like to set the property "category" on the LoggingEvent to
> "noncriticalDiagnostic".  Any way for me to do that automagically?
>
> I also posted this at:
>
>
> http://stackoverflow.com/questions/40187597/injecting-
> properties-into-log4nets-loggingevent
>
>
> Thanks,
>
> Nick
>

Mime
View raw message