using IOB_UT_NEXT; using NLog; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Net.NetworkInformation; using System.Threading; using static IOB_UT_NEXT.BaseAlarmConf; namespace IOB_WIN_NEXT.Iob { /// /// Classe di base per IOB /// public class BaseObj : IOB_UT_NEXT.Iob.BaseObj { #region Protected Fields /// /// Form chiamante /// protected AdapterForm parentForm; #endregion Protected Fields #region Protected Methods /// /// Effettua logging DEBUG corretto impostanto anche la variabile IOB prima di scrivere... /// /// protected void lgDebug(string message, bool sendToForm = true) { bool doVeto = checkLogVeto(20, ref message); // se non ho veto --> loggo if (!doVeto) { lg.Factory.Configuration.Variables["codIOB"] = cIobConf.filenameIOB; lg.Debug(message); if (sendToForm) { sendToLogWatch("DEBUG", message); } } } /// /// Effettua logging DEBUG corretto impostanto anche la variabile IOB prima di scrivere... /// /// /// protected void lgDebug(string message, params object[] args) { bool doVeto = checkLogVeto(20, ref message); // se non ho veto --> loggo if (!doVeto) { lg.Factory.Configuration.Variables["codIOB"] = cIobConf.filenameIOB; lg.Debug(message, args); sendToLogWatch("DEBUG", message, args); } } /// /// Effettua logging ERROR corretto impostanto anche la variabile IOB prima di scrivere... /// /// protected void lgError(string message, bool sendToForm = true) { bool doVeto = checkLogVeto(2, ref message); // se non ho veto --> loggo if (!doVeto) { lg.Factory.Configuration.Variables["codIOB"] = cIobConf.filenameIOB; lg.Error(message); if (sendToForm) { sendToLogWatch("ERROR", message); } } } /// /// Effettua logging ERROR corretto impostanto anche la variabile IOB prima di scrivere... /// /// /// protected void lgError(string message, params object[] args) { bool doVeto = checkLogVeto(2, ref message); // se non ho veto --> loggo if (!doVeto) { lg.Factory.Configuration.Variables["codIOB"] = cIobConf.filenameIOB; lg.Error(message, args); sendToLogWatch("ERROR", message, args); } } /// /// Effettua logging ERROR corretto impostanto anche la variabile IOB prima di scrivere... /// /// /// /// protected void lgError(Exception exception, string message, params object[] args) { bool doVeto = checkLogVeto(2, ref message); // se non ho veto --> loggo if (!doVeto) { lg.Factory.Configuration.Variables["codIOB"] = cIobConf.filenameIOB; lg.Error(exception, message, args); sendToLogWatch("ERROR", message, exception, args); } } /// /// Effettua logging FATAL corretto impostanto anche la variabile IOB prima di scrivere... /// /// protected void lgFatal(string message, bool sendToForm = true) { bool doVeto = checkLogVeto(1, ref message); // se non ho veto --> loggo if (!doVeto) { lg.Factory.Configuration.Variables["codIOB"] = cIobConf.filenameIOB; lg.Fatal(message); if (sendToForm) { sendToLogWatch("FATAL", message); } } } /// /// Effettua logging FATAL corretto impostanto anche la variabile IOB prima di scrivere... /// /// /// protected void lgFatal(string message, params object[] args) { bool doVeto = checkLogVeto(1, ref message); // se non ho veto --> loggo if (!doVeto) { lg.Factory.Configuration.Variables["codIOB"] = cIobConf.filenameIOB; lg.Fatal(message, args); sendToLogWatch("FATAL", message, args); } } /// /// Effettua logging FATAL corretto impostanto anche la variabile IOB prima di scrivere... /// /// /// /// protected void lgFatal(Exception exception, string message, params object[] args) { bool doVeto = checkLogVeto(1, ref message); // se non ho veto --> loggo if (!doVeto) { lg.Factory.Configuration.Variables["codIOB"] = cIobConf.filenameIOB; lg.Fatal(exception, message, args); sendToLogWatch("FATAL", message, exception, args); } } /// /// Effettua logging INFO corretto impostanto anche la variabile IOB prima di scrivere... /// /// protected void lgInfo(string message, bool sendToForm = true) { bool doVeto = checkLogVeto(30, ref message); // se non ho veto --> loggo if (!doVeto) { lg.Factory.Configuration.Variables["codIOB"] = cIobConf.filenameIOB; lg.Info(message); if (sendToForm) { sendToLogWatch("INFO", message); } } } /// /// Effettua logging INFO corretto impostanto anche la variabile IOB prima di scrivere... /// /// /// protected void lgInfo(string message, params object[] args) { bool doVeto = checkLogVeto(30, ref message); // se non ho veto --> loggo if (!doVeto) { lg.Factory.Configuration.Variables["codIOB"] = cIobConf.filenameIOB; lg.Info(message, args); sendToLogWatch("INFO", message, args); } } /// /// Effettua logging INFO corretto impostanto anche la variabile IOB prima di scrivere... /// /// /// protected void lgInfoStartup(string message, bool sendToForm = true) { bool doVeto = checkLogVeto(30, ref message); // se non ho veto --> loggo if (!doVeto) { lg.Factory.Configuration.Variables["codIOB"] = cIobConf.filenameIOB; DateTime adesso = DateTime.Now; if (adesso.Subtract(lastLogStartup).TotalMinutes > vetoLogStartupDuration) { lg.Info(message); // se supera di 5 minutis cadenza -_> reimposto veto... if (adesso.Subtract(lastLogStartup).TotalMinutes > vetoLogStartupDuration + 5) { lastLogStartup = adesso; } } if (sendToForm) { sendToLogWatch("INFO", message); } } } /// /// Effettua logging INFO corretto impostanto anche la variabile IOB prima di scrivere... /// /// /// protected void lgInfoStartup(string message, params object[] args) { bool doVeto = checkLogVeto(30, ref message); // se non ho veto --> loggo if (!doVeto) { lg.Factory.Configuration.Variables["codIOB"] = cIobConf.filenameIOB; DateTime adesso = DateTime.Now; if (adesso.Subtract(lastLogStartup).TotalMinutes > vetoLogStartupDuration) { lg.Info(message, args); // se supera di 5 minutis cadenza -_> reimposto veto... if (adesso.Subtract(lastLogStartup).TotalMinutes > vetoLogStartupDuration + 5) { lastLogStartup = adesso; } } sendToLogWatch("INFO", message, args); } } /// /// Effettua logging INFO corretto impostanto anche la variabile IOB prima di scrivere... /// /// protected void lgTrace(string message, bool sendToForm = true) { bool doVeto = checkLogVeto(60, ref message); // se non ho veto --> loggo if (!doVeto) { lg.Factory.Configuration.Variables["codIOB"] = cIobConf.filenameIOB; lg.Trace(message); if (sendToForm) { sendToLogWatch("TRACE", message); } } } /// /// Effettua logging INFO corretto impostanto anche la variabile IOB prima di scrivere... /// /// /// protected void lgTrace(string message, params object[] args) { bool doVeto = checkLogVeto(60, ref message); // se non ho veto --> loggo if (!doVeto) { lg.Factory.Configuration.Variables["codIOB"] = cIobConf.filenameIOB; lg.Trace(message, args); sendToLogWatch("TRACE", message, args); } } /// /// Invia messaggio a logWatcher /// /// /// protected void sendToLogWatch(string messType, string message) { newDisplayData currDispData = new newDisplayData(); currDispData.newLiveLogData = $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} | {messType} | {message}"; parentForm.updateFormDisplay(currDispData); } /// /// Invia messaggio a logWatcher /// /// /// /// protected void sendToLogWatch(string messType, string message, params object[] args) { try { string expString = string.Format(message, args); newDisplayData currDispData = new newDisplayData(); currDispData.newLiveLogData = $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} | {messType} | {expString}"; parentForm.updateFormDisplay(currDispData); } catch { } } /// /// Invia messaggio a logWatcher /// /// /// /// /// protected void sendToLogWatch(string messType, string message, Exception exception, params object[] args) { try { string expString = string.Format(message, args); newDisplayData currDispData = new newDisplayData(); currDispData.newLiveLogData = $"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} | {messType} | {expString}{Environment.NewLine}{exception}"; parentForm.updateFormDisplay(currDispData); } catch { } } #endregion Protected Methods #region Private Methods /// /// Verifica se ci sia veto log attivo e gestisce casistiche /// /// /// /// private bool checkLogVeto(int vetoSec, ref string message) { //verifico SE si debba fare log, altrimenti metto in coda... bool doVeto = true; DateTime adesso = DateTime.Now; if (VetoLog.ContainsKey(message)) { // conteggio num veto a +1... if (VetoLogCount.ContainsKey(message)) { VetoLogCount[message]++; } else { VetoLogCount.Add(message, 1); } // controllo scadenza, quando superata soglia aggiorno messaggio con {n} x {messaggio} if (adesso.Subtract(VetoLog[message]).TotalSeconds > vetoSec) { doVeto = false; string newMessage = $"{VetoLogCount[message]} x {message}"; VetoLog.Remove(message); VetoLogCount.Remove(message); message = newMessage; } } else { // primo --> loggo doVeto = false; VetoLog.Add(message, adesso.AddSeconds(vetoSec)); VetoLogCount.Add(message, 0); } // restituisco esito! return doVeto; } #endregion Private Methods } }