Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Diagnostics;
- using System.Text;
- namespace Gorls.Parser
- {
- public abstract class LogParser : ILogParser
- {
- EventLogEntryType[] _entryTypes = new EventLogEntryType[] { EventLogEntryType.Error, EventLogEntryType.Information, EventLogEntryType.Warning,
- EventLogEntryType.FailureAudit, EventLogEntryType.SuccessAudit };
- public LogTypeInfo LogInfo { get; set; }
- protected virtual string _parseMessageFromEntry(EventLogEntry entry)
- {
- return entry.Message;
- }
- public IEnumerable<LogData> ParseLogData()
- {
- if (LogInfo is null)
- {
- throw new EntryPointNotFoundException("SecLogParser.LogInfo is null!");
- }
- var entries = new EventLog(LogInfo.LogName).Entries;
- int firstIndex = 0;
- if(LogInfo.InstanceID != -1)
- {
- firstIndex = _parseLastLogId(entries);
- }
- for(var i = firstIndex; i < entries.Count; i++)
- {
- if(i >= entries.Count)
- {
- break;
- }
- var msg = _parseMessageFromEntry(entries[i]);
- if (string.IsNullOrEmpty(msg))
- {
- continue;
- }
- var eTypeID = _getEntryTypeID(entries[i].EntryType);
- if(eTypeID == -1)
- {
- continue;
- }
- var ld = _initNewLogData(msg, entries[i], eTypeID);
- yield return ld;
- }
- }
- private int _getEntryTypeID(EventLogEntryType type)
- {
- for(var i = 0; i < _entryTypes.Length; i++)
- {
- if(type == _entryTypes[i])
- {
- return i + 1;
- }
- }
- return -1;
- }
- private int _parseLastLogId(EventLogEntryCollection entries)
- {
- //for(var i = entries.Count - 1; i >=0; i--)
- //{
- // if (_logDataIsLast(entries[i]))
- // {
- // return i;
- // }
- //}
- for (var i = 0; i < entries.Count; i++)
- {
- if (_logDataIsLast(entries[i]))
- {
- return i;
- }
- }
- return 0;
- }
- private bool _logDataIsLast(EventLogEntry el)
- {
- return el.InstanceId == LogInfo.InstanceID && _parseMessageFromEntry(el) == LogInfo.Message
- && timesAreEqual(el.TimeWritten, LogInfo.TimeWritten) && LogInfo.EntryType == el.EntryType.ToString();
- }
- private bool _logDataIsLast(LogData ld)
- {
- return ld.EntryTypeID == LogInfo.EntryTypeID && ld.LogTypeID == LogInfo.LogTypeID &&
- ld.Message == LogInfo.Message && timesAreEqual(ld.TimeWritten, LogInfo.TimeWritten);
- }
- private bool timesAreEqual(DateTime dt1, DateTime dt2)
- {
- return dt1.Year == dt2.Year && dt1.Month == dt2.Month && dt1.Day == dt2.Day &&
- dt1.Hour == dt2.Hour && dt1.Minute == dt2.Minute && dt1.Second == dt2.Second;
- }
- private LogData _initNewLogData(string message, EventLogEntry entry, int entryTypeID)
- {
- return new LogData
- {
- ID = entry.InstanceId,
- EntryTypeID = entryTypeID,
- LogTypeID = LogInfo.LogTypeID,
- Message = message,
- TimeWritten = entry.TimeWritten
- };
- }
- private string _getTimeString(DateTime dt)
- {
- return ((int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds).ToString();
- return DateTime.UtcNow.Subtract(dt).TotalSeconds.ToString();
- //return dt.ToString("dd.MM.yyyy HH:mm:ss");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement