Exemplo n.º 1
0
        private string parseErrors(Exception ex)
        {
            try
            {
                if (ex == null)
                {
                    return(null);
                }

                StringBuilder sb = new StringBuilder();

                sb.AppendFormat("EXCEPTION: {0}. Trace: {1}. ", ex.Message?.Replace("\"", "'").Replace(";", "|"), ex.StackTrace?.Replace("\"", "'").Replace(";", "|"));

                var inner  = ex.InnerException;
                var innerc = 0;
                while (inner != null)
                {
                    innerc++;
                    sb.AppendFormat("INNER EXCEPTION #{2}: {0}. Trace: {1}. ", inner.Message?.Replace("\"", "'").Replace(";", "|"), inner.StackTrace?.Replace("\"", "'").Replace(";", "|"), innerc);
                    inner = inner.InnerException;
                }

                return(sb.ToString());
            }
            catch (Exception e)
            {
                OnLogOperationFailed?.Invoke(this, new LogHandlerOperationFailedEventArgs(RpmLogOperation.parseErrors, e.Message));
                return(null);
            }
        }
Exemplo n.º 2
0
        public void AddToLog(RpmLogEntryItem[] Entries, bool OutputOnNewLine = true)
        {
            try
            {
                var entriesAdded = new List <RpmLogEntryItem>();

                foreach (var entry in Entries)
                {
                    if (!_items.OrderByDescending(x => x.CreatedOn).Take(5).Any(x => x.Message == entry.Message))
                    {
                        entriesAdded.Add(entry);
                    }
                }

                if (entriesAdded.Count > 0)
                {
                    _items.AddRange(entriesAdded);
                    OnLogEntriesAdded?.Invoke(this, new LogEntriesAddedEventArgs(entriesAdded.ToArray(), OutputOnNewLine));
                }

                if (_items.Count >= 500)
                {
                    this.SaveLog();
                }
            }
            catch (Exception e)
            {
                OnLogOperationFailed?.Invoke(this, new LogHandlerOperationFailedEventArgs(RpmLogOperation.AddToLog, e.Message));
            }
        }
Exemplo n.º 3
0
        public void SaveLog()
        {
            try
            {
                if (Settings.DoNotSaveLog)
                {
                    return;
                }

                if (totalRowsWrittenToFile > 100000)
                {
                    logFileCount++;
                    totalRowsWrittenToFile = 0;
                    logFileCreated         = false;
                }

                var fullfilename = $"{(!string.IsNullOrWhiteSpace(Settings.LogFilePath) ? Path.Combine(Settings.LogFilePath, Settings.LogFileName) : Settings.LogFileName)}.{logFileCount.ToString().PadLeft(4,'0')}.csv";

                using (var logFile = File.AppendText(fullfilename))
                {
                    if (!logFileCreated)
                    {
                        logFile.WriteLine($"Rig Power Consumption Monitor Log (File #{logFileCount.ToString().PadLeft(4,'0')})");
                        logFile.WriteLine("");
                        logFile.WriteLine($"Smart plug:;{Settings.SmartPlugName}");
                        logFile.WriteLine($"IP:;{Settings.SmartPlugIpAddress}");
                        logFile.WriteLine("");
                        logFile.WriteLine("Created On;Type;Result;Message;Errors");

                        logFileCreated = true;
                    }

                    var itemsToSave = Settings.LoggingLevel == RpmLoggingLevel.Errors ? _items.Where(x => x.ItemType == RpmLogEntryItemType.ERROR)
                                    : Settings.LoggingLevel == RpmLoggingLevel.WarningErrors ? _items.Where(x => x.ItemType != RpmLogEntryItemType.INFO)
                                    : _items;

                    foreach (var item in itemsToSave)
                    {
                        logFile.WriteLine("{0};{1};{2};\"{3}\";\"{4}\""
                                          , item.CreatedOn.ToString("yyyy-MM-dd HH:mm:ss.fff")
                                          , item.ItemType.ToString()
                                          , item.Result
                                          , item.Message?.Replace("\"", "'").Replace(";", "|")
                                          , parseErrors(item.Error));
                    }

                    logFile.Close();
                    totalRowsWrittenToFile += _items.Count;
                }

                ClearLog();
            }
            catch (Exception e)
            {
                OnLogOperationFailed?.Invoke(this, new LogHandlerOperationFailedEventArgs(RpmLogOperation.SaveLog, e.Message));
            }
        }
Exemplo n.º 4
0
 public void AddToLog(RpmLogEntryItem Entry, bool OutputOnNewLine = true)
 {
     try
     {
         AddToLog(new RpmLogEntryItem[] { Entry }, OutputOnNewLine);
     }
     catch (Exception e)
     {
         OnLogOperationFailed?.Invoke(this, new LogHandlerOperationFailedEventArgs(RpmLogOperation.AddToLog, e.Message));
     }
 }
Exemplo n.º 5
0
 public void ClearLog()
 {
     try
     {
         _items.Clear();
     }
     catch (Exception e)
     {
         OnLogOperationFailed?.Invoke(this, new LogHandlerOperationFailedEventArgs(RpmLogOperation.ClearLog, e.Message));
     }
 }
Exemplo n.º 6
0
 public void Dispose()
 {
     try
     {
         if (_items?.Count > 0)
         {
             SaveLog();
         }
     }
     catch (Exception e)
     {
         OnLogOperationFailed?.Invoke(this, new LogHandlerOperationFailedEventArgs(RpmLogOperation.Dispose, e.Message));
     }
 }
Exemplo n.º 7
0
        public LogHandler(RpmLogSettings settings)
        {
            try
            {
                _items = new List <RpmLogEntryItem>();

                Settings = settings ?? new RpmLogSettings();

                logFileCount = 1;
            }
            catch (Exception ex)
            {
                OnLogOperationFailed?.Invoke(this, new LogHandlerOperationFailedEventArgs(RpmLogOperation.Instantiate, ex.Message));
            }
        }
Exemplo n.º 8
0
 public void AddToLog(string Message, bool OutputOnNewLine = true, RpmLogEntryItemType ItemType = RpmLogEntryItemType.INFO, Exception ex = null)
 {
     try
     {
         AddToLog(new RpmLogEntryItem
         {
             ItemType = ItemType,
             Result   = ex != null ? ex.HResult : 0,
             Message  = Message,
             Error    = ex
         }, OutputOnNewLine);
     }
     catch (Exception e)
     {
         OnLogOperationFailed?.Invoke(this, new LogHandlerOperationFailedEventArgs(RpmLogOperation.AddToLog, e.Message));
     }
 }
Exemplo n.º 9
0
        public void AddToLog(Exception ex)
        {
            try
            {
                List <RpmLogEntryItem> _items = new List <RpmLogEntryItem>();
                _items.Add(new RpmLogEntryItem
                {
                    ItemType = RpmLogEntryItemType.ERROR,
                    Result   = ex.HResult,
                    Message  = string.Format("An error occurred: {0}", ex.Message),
                    Error    = ex,
                });

                var innerex = ex.InnerException;
                var i       = 0;
                while (innerex != null)
                {
                    i++;

                    _items.Add(new RpmLogEntryItem
                    {
                        ItemType = RpmLogEntryItemType.ERROR,
                        Result   = innerex.HResult,
                        Message  = string.Format("Inner exception #{0}: {1}", i, innerex.Message),
                        Error    = innerex,
                    });

                    innerex = innerex.InnerException;
                }

                AddToLog(_items.ToArray());
            }
            catch (Exception e)
            {
                OnLogOperationFailed?.Invoke(this, new LogHandlerOperationFailedEventArgs(RpmLogOperation.AddToLog, e.Message));
            }
        }
Exemplo n.º 10
0
 private void Log_OnLogOperationFailed(object sender, LogHandlerOperationFailedEventArgs e)
 {
     OnLogOperationFailed?.Invoke(sender, e);
 }