示例#1
0
        public void Traverse(IMLoggerScopeNode node)
        {
            var messageIndex = 0;
            var childIndex   = 0;

            while (messageIndex < node.Messages.Count && childIndex < node.Children.Count)
            {
                if (node.Messages[messageIndex].Time < node.Children[childIndex].StartTime)
                {
                    LogRow(node.Messages[messageIndex]);
                    messageIndex++;
                }
                else
                {
                    Traverse(node.Children[childIndex]);
                    childIndex++;
                }
            }
            if (messageIndex < node.Messages.Count)
            {
                for (var i = messageIndex; i < node.Messages.Count; i++)
                {
                    LogRow(node.Messages[i]);
                }
            }
            else
            {
                for (var i = childIndex; i < node.Children.Count; i++)
                {
                    Traverse(node.Children[i]);
                }
            }
        }
        public void Traverse(IMLoggerScopeNode node, int level, Dictionary <string, int> counts)
        {
            LogRow(new LogInfo()
            {
                Name     = node.Name,
                Time     = node.StartTime,
                Severity = LogLevel.Debug,
                Message  = "Beginning " + node.State,
            }, level);

            var messageIndex = 0;
            var childIndex   = 0;

            while (messageIndex < node.Messages.Count && childIndex < node.Children.Count)
            {
                if (node.Messages[messageIndex].Time < node.Children[childIndex].StartTime)
                {
                    LogRow(node.Messages[messageIndex], level);
                    counts[node.Messages[messageIndex].Severity.ToString()]++;
                    messageIndex++;
                }
                else
                {
                    Traverse(node.Children[childIndex], level + 1, counts);
                    childIndex++;
                }
            }
            if (messageIndex < node.Messages.Count)
            {
                for (var i = messageIndex; i < node.Messages.Count; i++)
                {
                    LogRow(node.Messages[i], level);
                    counts[node.Messages[i].Severity.ToString()]++;
                }
            }
            else
            {
                for (var i = childIndex; i < node.Children.Count; i++)
                {
                    Traverse(node.Children[i], level + 1, counts);
                }
            }
            // print end of scope
            LogRow(new LogInfo()
            {
                Name     = node.Name,
                Time     = node.EndTime,
                Severity = LogLevel.Debug,
                Message  = string.Format("Completed {0} in {1}ms", node.State, node.EndTime - node.StartTime)
            }, level);
        }