private static void RaiseToEnabledSubscribers(MulticastDelegate handler, object sender, EventArgs e, ISHLogStrategy log)
        {
            if (handler != null)
            {
                var subscribers = handler.GetInvocationList();

                foreach (var s in subscribers)
                {
                    var eventSubscriber = s.Target as IEventSubscriber;

                    if (eventSubscriber != null && !eventSubscriber.enabled)
                    {
                        continue;
                    }

                    try
                    {
                        s.DynamicInvoke(sender, e);
                    }
                    catch (TargetInvocationException ex)
                    {
                        if (log == null)
                        {
                            throw ex.InnerException;
                        }
                        else
                        {
                            log.Debug("Error invoke event handler: {0}", ex.InnerException.Message);
                        }
                    }
                }
            }
        }
 /// <summary>
 /// Writes the debug log level message.
 /// </summary>
 /// <param name='message'>
 /// Message.
 /// </param>
 /// <param name='args'>
 /// Arguments.
 /// </param>
 public void Debug(string message, params object[] args)
 {
     m_underlyingLogStrategy.Debug(BuildMessage(message), args);
 }