using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AwInitilizer.ProcedureLog { public class LogWriter where T1 : Procedure.ProcedureBase where T2 : Enum { public Dictionary ReportPair { get; set; } public Dictionary LogPair { get; set; } internal readonly T1 source; public LogWriter(T1 source) { this.source = source; } public void Report(T2 logEvent, string data,bool isError = false) { string log = ""; log = CreateLogMessage(logEvent, data); Log(log, isError); if (ReportPair != null && ReportPair.ContainsKey(logEvent)) { MesReport(ReportPair[logEvent], data, !isError); } } public void Report(string logEvent, string data, bool isError = false) { string log = ""; log = string.Format("{0} {1}", logEvent, data); Log(log, isError); MesReport(logEvent, data, !isError); } public virtual void Log(string data, bool isError = false, bool isDebugLog = false) { WriteMyLog(data); if (!isDebugLog) { WriteShortLog(data, isError); WriteFormateLog(data); } } private string CreateLogMessage(T2 logEvent, string data) { string log; if (LogPair != null && LogPair.ContainsKey(logEvent)) { log = string.Format(LogPair[logEvent], data); } else { log = string.Format("{0} {1}", Enum.GetName(typeof(T2), logEvent), data); } return log; } private void MesReport(string key,string value, bool isSuccess) { //source.MesLogData[key] = value; source.MesLogData.Add(key,value,isSuccess); } private void WriteMyLog(string log) { source.InfoLog += string.Format("{0}\n", log); } private void WriteShortLog(string log, bool isError = false) { if (log.Length < 100) { Procedure.ProcedureBase.Logger.Print(log, isError); } } private void WriteFormateLog(string log) { source.ReportLog.Add(log); } } }