public void DebugFormat(string format, params object[] args)
 {
     if (_runtime == null) return;
     if (_runtime.Invoke() == RuntimePolicy.Off) return;
     if (format == null) return;
     if (!LoggerFactory.LogRequest()) return;
     var item = new LogStatistic(null, null)
                    {
                        ConnectionNotification = string.Format(format.Trim().UppercaseFirst(), args).ToUpper()
                    };
     Log(item);
 }
 public void Debug(object message)
 {
     if (_runtime == null) return;
     if (_runtime.Invoke() == RuntimePolicy.Off) return;
     if (message == null) return;
     if (!LoggerFactory.LogRequest()) return;
     if (!message.ToString().ToLower().Trim().StartsWith(TargetMessage)) return;
     if (!LoggerFactory.LogRequest()) return;
     var item = new LogStatistic(null, null)
                    {
                        LoadNotification =
                            message.ToString().Replace(TargetMessage, string.Empty).Trim().UppercaseFirst()
                    };
     Log(item);
 }
 public void Debug(object message)
 {
     if (_runtime == null) return;
     if (_runtime.Invoke() == RuntimePolicy.Off) return;
     if (message == null) return;
     if (!LoggerFactory.LogRequest()) return;
     var stackFrames = new System.Diagnostics.StackTrace().GetFrames();
     var methods = new List<MethodBase>();
     if (stackFrames != null)
     {
         foreach (var frame in stackFrames)
         {
             var meth = frame.GetMethod();
             var type = meth.DeclaringType;
             // ReSharper disable ConditionIsAlwaysTrueOrFalse
             //this can happen for emitted types
             if (type != null)
             // ReSharper restore ConditionIsAlwaysTrueOrFalse
             {
                 var assem = type.Assembly;
                 if (Equals(assem, _thisAssem)) continue;
                 if (Equals(assem, _nhAssem)) continue;
                 if (Equals(assem, _glimpseAssem)) continue;    
             }
             methods.Add(frame.GetMethod());
         }
     }
     // ReSharper disable ConditionIsAlwaysTrueOrFalse
     var frames = methods
         .Select(method => string.Format("{0} -> {1}", (method.DeclaringType == null) ? "DYNAMIC" : method.DeclaringType.ToString(), method))
         .ToList();
     // ReSharper restore ConditionIsAlwaysTrueOrFalse
     var item = new LogStatistic(null, null)
                    {
                        Sql = message.ToString(),
                        StackFrames = frames,
                        ExecutionType = (methods.Count == 0)
                                            ? null
                                            : (methods[0].DeclaringType == null)
                                                  ? "Object"
                                                  : methods[0].DeclaringType.Name,
                        ExecutionMethod = (methods.Count == 0) ? null : methods[0].Name,
                    };
     SqlCommandExecuted(item);
     Log(item);
 }
 public void Debug(object message)
 {
     if (_runtime == null) return;
     if (_runtime.Invoke() == RuntimePolicy.Off) return;
     if (message == null) return;
     if (!LoggerFactory.LogRequest()) return;
     var timestamp = DateTime.Now;
     var item = new LogStatistic(null, null)
                    {
                        TransactionNotification =
                            string.Format("{0}{1}", message.ToString().Trim().UppercaseFirst(),
                                          string.Format(" @ {0}.{1}.{2}.{3}",
                                                        timestamp.Hour.ToString(CultureInfo.InvariantCulture)
                                                                 .PadLeft(2, '0'),
                                                        timestamp.Minute.ToString(CultureInfo.InvariantCulture)
                                                                 .PadLeft(2, '0'),
                                                        timestamp.Second.ToString(CultureInfo.InvariantCulture)
                                                                 .PadLeft(2, '0'),
                                                        timestamp.Millisecond.ToString(
                                                            CultureInfo.InvariantCulture).PadLeft(3, '0')))
                    };
     Log(item);
 }
 static void Log(LogStatistic logStatistic)
 {
     if (_messageBroker == null) return;
     _messageBroker.Publish(logStatistic);
 }
        static void SqlCommandExecuted(LogStatistic logStatistic)
        {
            if (_timerStrategy == null) return;
            var timer = _timerStrategy.Invoke();
            if (timer == null) return;
            var point = timer.Point();

            var pointTimelineMessage = new NHibernateTimelineMessage
                                           {
                                               Duration = point.Duration,
                                               Offset = point.Offset,
                                               StartTime = point.StartTime,
                                               EventName = string.Format("{0}:{1}", logStatistic.ExecutionType, logStatistic.ExecutionMethod),
                                               EventSubText = logStatistic.Id.ToString()
                                           };
          _messageBroker.Publish(pointTimelineMessage);
        }
        public void Debug(object message)
        {
            if (_runtime == null) return;
            if (_runtime.Invoke() == RuntimePolicy.Off) return;
            if (message == null) return;
            if (!LoggerFactory.LogRequest()) return;
            var stackFrames = new StackTrace(true).GetFrames();
            var methods = new List<MethodBase>();
            var stackTrace = new List<StackFrame>();
            if (stackFrames != null)
            {
                foreach (var frame in stackFrames)
                {
                    var meth = frame.GetMethod();
                    var type = meth.DeclaringType;
                    // ReSharper disable ConditionIsAlwaysTrueOrFalse
                    //this can happen for emitted types
                    if (type != null)
                    // ReSharper restore ConditionIsAlwaysTrueOrFalse
                    {
                        var assem = type.Assembly;
                        if (Equals(assem, _thisAssem)) continue;
                        if (Equals(assem, _nhAssem)) continue;
                        if (Equals(assem, _glimpseAssem)) continue;
                    }
                    methods.Add(meth);
                    stackTrace.Add(frame);
                }
            }
            // ReSharper disable ConditionIsAlwaysTrueOrFalse
            var frames = stackTrace
                .Select(frame =>
                {
                    var method = frame.GetMethod();
                    var fileName = frame.GetFileName();
                    var hasFileName = fileName != null;
                    var displayPrefix = hasFileName ? "[#] " : ""; // visual cue that the frame has file info if expanded
                    var displaySuffix = hasFileName ?
                        string.Format(" @ {0}, line {1}, column {2}",
                            fileName,
                            frame.GetFileLineNumber(),
                            frame.GetFileColumnNumber()) :
                        "";

                    return string.Format(displayPrefix + "{0} -> {1}" + displaySuffix,
                        (method.DeclaringType == null) ? "DYNAMIC" : method.DeclaringType.ToString(), method);
                })
                .ToList();
            // ReSharper restore ConditionIsAlwaysTrueOrFalse
            var item = new LogStatistic(null, null)
                           {
                               Sql = message.ToString(),
                               StackFrames = frames,
                               ExecutionType = (methods.Count == 0)
                                                   ? null
                                                   : (methods[0].DeclaringType == null)
                                                         ? "Object"
                                                         : methods[0].DeclaringType.Name,
                               ExecutionMethod = (methods.Count == 0) ? null : methods[0].Name,
                           };
            SqlCommandExecuted(item);
            Log(item);
        }