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

Reply via email to