Пример #1
0
        private static void EndBuildStepInternal(BuildLog log)
        {
            Debug.Assert(log.m_Stack.Count > 1);
            LogStep node = log.m_Stack.Pop();

            node.Complete(log.GetWallTime());

            if (node.isThreaded)
            {
                foreach (BuildLog subLog in log.m_ThreadedLogs.Values)
                {
                    if (subLog != log)
                    {
                        OffsetTimesR(subLog.Root, node.StartTime);
                        if (subLog.Root.HasChildren)
                        {
                            node.Children.AddRange(subLog.Root.Children);
                        }

                        if (subLog.Root.HasEntries)
                        {
                            node.Entries.AddRange(subLog.Root.Entries);
                        }
                    }
                }
                log.m_ThreadedLogs.Dispose();
                log.m_ThreadedLogs = null;
            }
        }
        /// <inheritdoc />
        public void AddEntry(LogLevel level, string msg)
        {
            BuildLog log = GetThreadSafeLog();

            log.m_Stack.Peek().Entries.Add(new LogEntry()
            {
                Level = level, Message = msg, Time = log.GetWallTime(), ThreadId = Thread.CurrentThread.ManagedThreadId
            });
        }
        private static void BeginBuildStepInternal(BuildLog log, LogLevel level, string stepName, bool multiThreaded)
        {
            LogStep node = new LogStep();

            node.Level     = level;
            node.Name      = stepName;
            node.StartTime = log.GetWallTime();
            node.ThreadId  = Thread.CurrentThread.ManagedThreadId;
            log.m_Stack.Peek().Children.Add(node);
            log.m_Stack.Push(node);
            if (multiThreaded)
            {
                Debug.Assert(log.m_ThreadedLogs == null);
                log.m_ThreadedLogs       = new ThreadLocal <BuildLog>(true);
                log.m_ThreadedLogs.Value = log;
                node.isThreaded          = true;
            }
        }