/// <summary>
 /// Called before the main TraceEventCore method and applies any filter by calling ShouldTrace.
 /// </summary>
 protected virtual void FilterTraceEventCore(TraceEventCache eventCache, string source, TraceEventType eventType,
                                             int id, string message)
 {
     try
     {
         if (!ShouldTrace(eventCache, source, eventType, id, message, null, null, null))
         {
             return;
         }
         TraceEventCore(eventCache, source, eventType, id, message);
     }
     catch (Exception exc)
     {
         InternalLogger.LogException(exc);
     }
 }