Advertisement
Guest User

logparser

a guest
Aug 22nd, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.01 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.Text;
  5.  
  6. namespace Gorls.Parser
  7. {
  8.     public abstract class LogParser : ILogParser
  9.     {
  10.         EventLogEntryType[] _entryTypes = new EventLogEntryType[] { EventLogEntryType.Error, EventLogEntryType.Information, EventLogEntryType.Warning,
  11.         EventLogEntryType.FailureAudit, EventLogEntryType.SuccessAudit };
  12.         public LogTypeInfo LogInfo { get; set; }
  13.         protected virtual string _parseMessageFromEntry(EventLogEntry entry)
  14.         {
  15.             return entry.Message;
  16.         }
  17.         public IEnumerable<LogData> ParseLogData()
  18.         {
  19.             if (LogInfo is null)
  20.             {
  21.                 throw new EntryPointNotFoundException("SecLogParser.LogInfo is null!");
  22.             }
  23.             var entries = new EventLog(LogInfo.LogName).Entries;
  24.             int firstIndex = 0;
  25.             if(LogInfo.InstanceID != -1)
  26.             {
  27.                 firstIndex = _parseLastLogId(entries);
  28.             }
  29.             for(var i = firstIndex; i < entries.Count; i++)
  30.             {
  31.                 if(i >= entries.Count)
  32.                 {
  33.                     break;
  34.                 }
  35.                 var msg = _parseMessageFromEntry(entries[i]);
  36.                 if (string.IsNullOrEmpty(msg))
  37.                 {
  38.                     continue;
  39.                 }
  40.                 var eTypeID = _getEntryTypeID(entries[i].EntryType);
  41.                 if(eTypeID == -1)
  42.                 {
  43.                     continue;
  44.                 }
  45.                 var ld = _initNewLogData(msg, entries[i], eTypeID);
  46.                 yield return ld;
  47.             }
  48.         }
  49.         private int _getEntryTypeID(EventLogEntryType type)
  50.         {
  51.             for(var i = 0; i < _entryTypes.Length; i++)
  52.             {
  53.                 if(type == _entryTypes[i])
  54.                 {
  55.                     return i + 1;
  56.                 }
  57.             }
  58.             return -1;
  59.         }
  60.         private int _parseLastLogId(EventLogEntryCollection entries)
  61.         {
  62.             //for(var i = entries.Count - 1; i >=0; i--)
  63.             //{
  64.             //    if (_logDataIsLast(entries[i]))
  65.             //    {
  66.             //        return i;
  67.             //    }
  68.             //}
  69.             for (var i = 0; i < entries.Count; i++)
  70.             {
  71.                 if (_logDataIsLast(entries[i]))
  72.                 {
  73.                     return i;
  74.                 }
  75.             }
  76.             return 0;
  77.         }
  78.         private bool _logDataIsLast(EventLogEntry el)
  79.         {
  80.             return el.InstanceId == LogInfo.InstanceID && _parseMessageFromEntry(el) == LogInfo.Message
  81.                 && timesAreEqual(el.TimeWritten, LogInfo.TimeWritten) && LogInfo.EntryType == el.EntryType.ToString();
  82.         }
  83.         private bool _logDataIsLast(LogData ld)
  84.         {
  85.             return ld.EntryTypeID == LogInfo.EntryTypeID && ld.LogTypeID == LogInfo.LogTypeID &&
  86.                 ld.Message == LogInfo.Message && timesAreEqual(ld.TimeWritten, LogInfo.TimeWritten);
  87.         }
  88.         private bool timesAreEqual(DateTime dt1, DateTime dt2)
  89.         {
  90.             return dt1.Year == dt2.Year && dt1.Month == dt2.Month && dt1.Day == dt2.Day &&
  91.                 dt1.Hour == dt2.Hour && dt1.Minute == dt2.Minute && dt1.Second == dt2.Second;
  92.         }
  93.         private LogData _initNewLogData(string message, EventLogEntry entry, int entryTypeID)
  94.         {
  95.             return new LogData
  96.             {
  97.                 ID = entry.InstanceId,
  98.                 EntryTypeID = entryTypeID,
  99.                 LogTypeID = LogInfo.LogTypeID,
  100.                 Message = message,
  101.                 TimeWritten = entry.TimeWritten
  102.             };
  103.         }
  104.         private string _getTimeString(DateTime dt)
  105.         {
  106.             return ((int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds).ToString();
  107.             return DateTime.UtcNow.Subtract(dt).TotalSeconds.ToString();
  108.             //return dt.ToString("dd.MM.yyyy HH:mm:ss");
  109.         }
  110.     }
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement