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(); } }