public static int SearchEventLog(string logLocation, string query, string writeOutputpath, string filterText, bool boolGroupProperties) { FileInfo info = new FileInfo(logLocation); List <EventRecord> results = new List <EventRecord>(); int recordCount = 0; if (info.Length > 800000000) //clipping level to avoid running out of memory { try { EventLogQuery eventsQuery = new EventLogQuery(logLocation, PathType.FilePath, query); EventLogReader logReader = new EventLogReader(eventsQuery); for (EventRecord eventdetail = logReader.ReadEvent(); eventdetail != null; eventdetail = logReader.ReadEvent()) { results.Add(eventdetail); EventLogHelper.WriteEventRecords(results, writeOutputpath, filterText, true, boolGroupProperties); recordCount += 1; results.Clear(); } } catch (EventLogNotFoundException e) { string errorString = e.ToString(); File.AppendAllText(AppDomain.CurrentDomain.BaseDirectory + "\\error.log", logLocation + "|" + query + "|" + errorString + "\n"); } return(recordCount); } else { results = SearchEventLogs(logLocation, query); recordCount = EventLogHelper.WriteEventRecords(results, writeOutputpath, filterText, true, boolGroupProperties); return(recordCount); } }