logging-log4net-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nicholas Duane <nic...@msn.com>
Subject Injecting properties into LoggingEvent
Date Sat, 22 Oct 2016 15:30:25 GMT
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