コード例 #1
0
        private void LogDisplayLineAdd()
        {
            if (_logQueue.Count <= 0)
            {
                return;
            }
            List <TreeNode> nodes = new List <TreeNode>();

            int      count = _logQueue.Count;
            TreeNode node  = null;

            for (int i = 0; i < count; i++)
            {
                if (_logQueue.Count <= 0)
                {
                    break;
                }
                ILogData logData = _logQueue.Dequeue();

                if (logData != null)
                {
                    node = new TreeNode(logData.GetDataForDisplay("/"));
                    //node.Tag = logData;

                    //if (logData is CMelsecLogFormat)
                    //{
                    //    if (node.Text.Contains("WRITE"))
                    //    {
                    //        node.ForeColor = Color.DimGray;
                    //    }
                    //    else
                    //    {
                    //        node.ForeColor = Color.SandyBrown;
                    //    }
                    //}
                    //else if (logData is CExceptionLogFormat)
                    //{
                    // node.ForeColor = Color.Red;
                    node.ForeColor = Color.Yellow;
                    //}
                    //else if (logData is CSchedulerLogFormat)
                    //{
                    //    node.ForeColor = Color.SteelBlue;
                    //}
                    //else if (logData is CUILogFormat)
                    //{
                    //    node.ForeColor = Color.DeepSkyBlue;
                    //}

                    string[] temp = logData.GetDataForDisplay("\t").Split('\t');

                    TreeNode innerNode = new TreeNode(string.Format("LOG INFO [NAME]={0}, [KEY]={1}, [LEVEL]={2}, [CLASS]={3}", logData.LogName.PadRight(10), logData.LogKey, logData.LogLevel.ToString(), logData.LogType));
                    foreach (string item in temp)
                    {
                        innerNode.Nodes.Add(item);
                    }
                    node.Nodes.Add(innerNode);
                    node.ToolTipText = logData.GetDataForDisplay("\n");
                    //node.Expand();
                    nodes.Add(node);
                }
            }

            if (nodes.Count <= 0)
            {
                return;
            }


            if (treeViewLogSpy.Nodes.Count > AUTO_DELETE_COUNT)
            {
                int removeCount = treeViewLogSpy.Nodes.Count - AUTO_DELETE_COUNT;
                for (int i = 0; i < removeCount; i++)
                {
                    if (!treeViewLogSpy.IsDisposed && treeViewLogSpy.Nodes.Count > 0)
                    {
                        treeViewLogSpy.Nodes.RemoveAt(0);
                    }
                }
            }

            treeViewLogSpy.Nodes.AddRange(nodes.ToArray());

            if (node != null && treeViewLogSpy.Focused == false) //마지막 추가된 노드로 이동.
            {
                treeViewLogSpy.SelectedNode = node;
                treeViewLogSpy.Update();
            }
        }