void CollectEventLogs(string logFileCollectionPath = "") { var els = new EventLogSession(); // this query gets the last 7 days of events string q = "<QueryList>" + "<Query Id=\"0\" Path=\"Application\">" + "<Select Path=\"Application\">*[System[TimeCreated[timediff(@SystemTime) <= 604800000]]]</Select>" + "</Query>" + "</QueryList>"; els.ExportLogAndMessages("Application", PathType.LogName, q, Path.Combine(logFileCollectionPath + "\\Application.evtx"), false, CultureInfo.CurrentCulture); // this query gets the last 7 days of events q = "<QueryList>" + "<Query Id=\"0\" Path=\"System\">" + "<Select Path=\"System\">*[System[TimeCreated[timediff(@SystemTime) <= 604800000]]]</Select>" + "</Query>" + "</QueryList>"; els.ExportLogAndMessages("System", PathType.LogName, q, Path.Combine(logFileCollectionPath + "\\System.evtx"), false, CultureInfo.CurrentCulture); }
public static void Main(string[] args) { int exitCode = 0; String logPath = "Application"; String query = "*/System[Level <= 3 and Level >= 1]"; // XPath selecting all events of level warning or higher. String targetFile = Environment.ExpandEnvironmentVariables("%USERPROFILE%\\export.evtx"); String targetFileWithMessages = Environment.ExpandEnvironmentVariables("%USERPROFILE%\\exportWithMessages.evtx"); try { // // Parse the command line. // if (args.Length > 0) { if (args[0] == "/?" || args[0] == "-?") { Console.WriteLine("Usage: LogManagement [<logname> [<exportFile> [<exportFileWithMessages>]]]\n" + "<logname> is the name of an existing event log.\n" + "When <logname> is not specified, Application is assumed.\n" + "EXAMPLE: LogManagement Microsoft-Windows-TaskScheduler/Operational archive.evtx archiveWithMessages.evtx\n"); Environment.Exit(0); } else { logPath = args[0]; if (args.Length > 1) { targetFile = args[1]; } if (args.Length > 2) { targetFileWithMessages = args[2]; } } } // // Get log information. // EventLogSession session = new EventLogSession(); EventLogInformation logInfo = session.GetLogInformation(logPath, PathType.LogName); Console.WriteLine("The {0} log contains {1} events.", logPath, logInfo.RecordCount ); // // Export selected events from a log to a file. // if (File.Exists(targetFile)) { Console.WriteLine("Could not export log {0}: file {1} already exists", logPath, targetFile); Environment.Exit(1); } else { session.ExportLog(logPath, PathType.LogName, query, targetFile, true); Console.WriteLine("Selected events from the {0} log have been exported to file {1}.", logPath, targetFile); } // // Capture localized event information so that the exported log can be viewed on // systems that might not have some of the event providers installed. // if (File.Exists(targetFileWithMessages)) { Console.WriteLine("Could not archive log {0}: file {1} already exists", logPath, targetFileWithMessages); Environment.Exit(1); } else { session.ExportLogAndMessages(logPath, PathType.LogName, query, targetFileWithMessages, true, CultureInfo.CurrentCulture); Console.WriteLine("The export file {0} has been localized into {1} for archiving.", targetFileWithMessages, CultureInfo.CurrentCulture.DisplayName); } // // Clear the log. // session.ClearLog(logPath); Console.WriteLine("The {0} log has been cleared.", logPath ); } catch (UnauthorizedAccessException e) { Console.WriteLine("You do not have the correct permissions. " + "Try re-running the sample with administrator privileges.\n" + e.ToString()); } catch(Exception e) { Console.WriteLine(e.ToString()); exitCode = 1; } Environment.Exit(exitCode); }