using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using SA_LTT; using System.IO; namespace SA_LTT_UI.Screen { public partial class ScreenLog : UserControl { private MainFrame _mainFrame; public ScreenLog(MainFrame mainFrame) { InitializeComponent(); _mainFrame = mainFrame; lv_Log.MultiSelect = true; } private void mc_DateTime_DateChanged(object sender, DateRangeEventArgs e) { dtp_StartDateTime.Value = mc_DateTime.SelectionStart; dtp_EndDateTime.Value = mc_DateTime.SelectionEnd; } private void dtp_StartDateTime_ValueChanged(object sender, EventArgs e) { mc_DateTime.SelectionStart = dtp_StartDateTime.Value; } private void dtp_EndDateTime_ValueChanged(object sender, EventArgs e) { mc_DateTime.SelectionEnd = dtp_EndDateTime.Value; } private void btn_AlarmOccurredLog_Click(object sender, EventArgs e) { lv_Log.Columns.Clear(); lv_Log.Items.Clear(); lv_Log.Columns.Add("Date", 200); lv_Log.Columns.Add("Alarm Code", 400); lv_Log.Columns.Add("Description", 200); lv_Log.Columns.Add("Level", 200); List selectedDates = new List(); DateTime devDateTime = mc_DateTime.SelectionStart; while(true) { selectedDates.Add(devDateTime); devDateTime = devDateTime.AddDays(1); if (devDateTime > mc_DateTime.SelectionEnd) { break; } } string[] logs = GetLogsInFile(EquipmentLogManager.s_alarmOccurredLogPath, "AlarmOccurred_", selectedDates); foreach (string log in logs) { ListViewItem logDatas = new ListViewItem(log.Split(',')); lv_Log.Items.Add(logDatas); } } private void btn_AlarmChangedLog_Click(object sender, EventArgs e) { lv_Log.Columns.Clear(); lv_Log.Items.Clear(); lv_Log.Columns.Add("Date", 200); lv_Log.Columns.Add("Alarm Code", 400); lv_Log.Columns.Add("Description", 200); lv_Log.Columns.Add("Level", 200); lv_Log.Columns.Add("Use", 200); List selectedDates = new List(); DateTime devDateTime = mc_DateTime.SelectionStart; while (true) { selectedDates.Add(devDateTime); devDateTime = devDateTime.AddDays(1); if (devDateTime > mc_DateTime.SelectionEnd) { break; } } string[] logs = GetLogsInFile(EquipmentLogManager.s_alarmChangedLogPath, "AlarmChanged_", selectedDates); foreach (string log in logs) { ListViewItem logDatas = new ListViewItem(log.Split(',')); lv_Log.Items.Add(logDatas); } } /// /// 로그 가져오기. /// ex) D:\\Log\\AlarmOccurred\\2022\\07\\AlarmOccurred_28.log /// rootPath : D:\\Log\\AlarmOccurred\\ /// filePattern : AlarmOccurred_ /// extension : .log /// /// Root 파일 경로. /// 파일 패턴. /// log 가져올 날짜 /// 파일 확장자 (기본 .log) /// private string[] GetLogsInFile(string rootPath, string filePattern, List selectedDateTime, string extension = ".log") { List logs = new List(); logs.Clear(); foreach (DateTime logDate in selectedDateTime) { string path = rootPath + $@"{logDate.Year}\{logDate.Month:00}\{filePattern}{logDate.Day:00}{extension}"; if (File.Exists(path) == false) continue; //파일 열려있어도 읽을 수 있도록 제작. using (FileStream fs = File.Open(path, FileMode.OpenOrCreate, FileAccess.Read, FileShare.ReadWrite)) { using (StreamReader sr = new StreamReader(fs)) { while (true) { string logdata = sr.ReadLine(); if (logdata == null) { break; } else { logs.Add(logdata); } } sr.Close(); } fs.Close(); } } return logs.ToArray(); } private void btn_EnergyDropCheckLog_Click(object sender, EventArgs e) { lv_Log.Columns.Clear(); lv_Log.Items.Clear(); lv_Log.Columns.Add("Date", 200); lv_Log.Columns.Add("Description", 800); List selectedDates = new List(); DateTime devDateTime = mc_DateTime.SelectionStart; while (true) { selectedDates.Add(devDateTime); devDateTime = devDateTime.AddDays(1); if (devDateTime > mc_DateTime.SelectionEnd) { break; } } string[] logs = GetLogsInFile(EquipmentLogManager.s_energyDropCheckLogPath, "EnergyDropCheck_", selectedDates); foreach (string log in logs) { ListViewItem logDatas = new ListViewItem(log.Split(',')); lv_Log.Items.Add(logDatas); } } private void btn_AttenuatorCalLog_Click(object sender, EventArgs e) { lv_Log.Columns.Clear(); lv_Log.Items.Clear(); lv_Log.Columns.Add("Date", 200); lv_Log.Columns.Add("Description", 800); List selectedDates = new List(); DateTime devDateTime = mc_DateTime.SelectionStart; while (true) { selectedDates.Add(devDateTime); devDateTime = devDateTime.AddDays(1); if (devDateTime > mc_DateTime.SelectionEnd) { break; } } string[] logs = GetLogsInFile(EquipmentLogManager.s_attenuatorCalLogPath, "AttenuatorCal_", selectedDates); foreach (string log in logs) { ListViewItem logDatas = new ListViewItem(log.Split(',')); lv_Log.Items.Add(logDatas); } } private void btn_ProcessLog_Click(object sender, EventArgs e) { lv_Log.Columns.Clear(); lv_Log.Items.Clear(); lv_Log.Columns.Add("Date", 200); lv_Log.Columns.Add("Description", 800); List selectedDates = new List(); DateTime devDateTime = mc_DateTime.SelectionStart; while (true) { selectedDates.Add(devDateTime); devDateTime = devDateTime.AddDays(1); if (devDateTime > mc_DateTime.SelectionEnd) { break; } } string[] logs = GetLogsInFile(EquipmentLogManager.s_processLogPath, "Process_", selectedDates); foreach (string log in logs) { ListViewItem logDatas = new ListViewItem(log.Split(',')); lv_Log.Items.Add(logDatas); } } private void btn_ButtonLog_Click(object sender, EventArgs e) { lv_Log.Columns.Clear(); lv_Log.Items.Clear(); lv_Log.Columns.Add("Date", 200); lv_Log.Columns.Add("Event", 800); List selectedDates = new List(); DateTime devDateTime = mc_DateTime.SelectionStart; while (true) { selectedDates.Add(devDateTime); devDateTime = devDateTime.AddDays(1); if (devDateTime > mc_DateTime.SelectionEnd) { break; } } string[] logs = GetLogsInFile(EquipmentLogManager.s_buttonLogPath, "Button_", selectedDates); foreach (string log in logs) { ListViewItem logDatas = new ListViewItem(log.Split(',')); lv_Log.Items.Add(logDatas); } } } }