/// <summary> /// Removes Windows event log sources provided by the the argument /// </summary> /// <param name="data">Data to create performance counters</param> public static WindowsLogInstallationResult RemoveEventLogSources(EventLogCreationData data) { var errors = new Dictionary<string, Exception>(); var installedSources = new Dictionary<string, List<string>>(); if (data == null) throw new ArgumentNullException("data"); // --- Install sources one-by-one foreach (var creationData in data.SourceCreationData) { // --- Check if source already exists if (!EventLog.SourceExists(creationData.Source)) continue; // --- Check, if the appropriate log holds the source var sourceLog = EventLog.LogNameFromSourceName(creationData.Source, "."); if (sourceLog != creationData.LogName) continue; // --- Remove the source from its current log EventLog.DeleteEventSource(creationData.Source); // --- Add source to results List<string> sources; if (!installedSources.TryGetValue(creationData.LogName, out sources)) { installedSources.Add(creationData.LogName, new List<string> {creationData.Source}); } else { sources.Add(creationData.Source); } } return new WindowsLogInstallationResult(installedSources, errors); }
public void InstallOverrridesExistingSource() { // --- Arrange const string LOG1 = "_myLog1"; const string LOG2 = "_myLog2"; if (EventLog.Exists(LOG1)) EventLog.Delete(LOG1); if (EventLog.Exists(LOG2)) EventLog.Delete(LOG2); var data = new EventLogCreationData(); data.Add(LOG1, "Source1"); data.Add(LOG1, "Source2"); data.Add(LOG2, "Source3"); data.Add(LOG2, "Source1"); // --- Overrides LOG1 // --- Act var result = WindowsEventLogManager.InstallEventLogSources(data); // --- Assert result.Errors.ShouldHaveCountOf(0); result.AffectedSources.ShouldHaveCountOf(2); result.AffectedSources[LOG1].ShouldHaveCountOf(2); result.AffectedSources[LOG1].ShouldContain("Source1"); result.AffectedSources[LOG1].ShouldContain("Source2"); result.AffectedSources[LOG2].ShouldHaveCountOf(2); result.AffectedSources[LOG2].ShouldContain("Source3"); result.AffectedSources[LOG2].ShouldContain("Source1"); EventLog.LogNameFromSourceName("Source1", ".").ShouldEqual(LOG2); EventLog.LogNameFromSourceName("Source2", ".").ShouldEqual(LOG1); EventLog.LogNameFromSourceName("Source3", ".").ShouldEqual(LOG2); }
public void EventLogCreationDataAddFailesWithWrongType() { // --- Arrange var data = new EventLogCreationData(); // --- Act data.Add(typeof(int)); }
/// <summary> /// Installs Windows event log sources provided by the the argument /// </summary> /// <param name="data">Data to create performance counters</param> public static WindowsLogInstallationResult InstallEventLogSources(EventLogCreationData data) { var errors = new Dictionary <string, Exception>(); var installedSources = new Dictionary <string, List <string> >(); if (data == null) { throw new ArgumentNullException("data"); } // --- Install sources one-by-one foreach (var creationData in data.SourceCreationData) { try { // --- Check if source already exists if (EventLog.SourceExists(creationData.Source)) { // --- Check, if the appripriate log holds the source var sourceLog = EventLog.LogNameFromSourceName(creationData.Source, "."); if (sourceLog != creationData.LogName) { // --- Remove the source from its current log EventLog.DeleteEventSource(creationData.Source); EventLog.CreateEventSource(creationData); } } else { // --- At this point the source can be created EventLog.CreateEventSource(creationData); } // --- Add source to results List <string> sources; if (!installedSources.TryGetValue(creationData.LogName, out sources)) { installedSources.Add(creationData.LogName, new List <string> { creationData.Source }); } else { sources.Add(creationData.Source); } } catch (Exception ex) { errors[creationData.Source] = ex; } } return(new WindowsLogInstallationResult(installedSources, errors)); }
public void InstallSignsSourceIssues() { // --- Arrange const string LOG1 = "My very long name 1"; const string LOG2 = "My very long name 2"; if (EventLog.Exists(LOG1)) EventLog.Delete(LOG1); var data = new EventLogCreationData(); data.Add(LOG1, "Source1"); data.Add(LOG2, "Source2"); // --- Act var result = WindowsEventLogManager.InstallEventLogSources(data); if (EventLog.Exists(LOG1)) EventLog.Delete(LOG1); if (EventLog.Exists(LOG2)) EventLog.Delete(LOG2); // --- Assert result.Errors.ShouldHaveCountOf(1); }
public void InstallSignsSourceIssues2() { // --- Arrange const string LOG1 = null; // ReSharper disable AssignNullToNotNullAttribute if (EventLog.Exists(LOG1)) EventLog.Delete(LOG1); // ReSharper restore AssignNullToNotNullAttribute var data = new EventLogCreationData(); data.Add(LOG1, "Source1"); // --- Act var result = WindowsEventLogManager.InstallEventLogSources(data); // ReSharper disable AssignNullToNotNullAttribute if (EventLog.Exists(LOG1)) EventLog.Delete(LOG1); // ReSharper restore AssignNullToNotNullAttribute // --- Assert result.Errors.ShouldHaveCountOf(1); Console.WriteLine(result.Errors.First().Value.Message); }
public void RemoveWorksAsExpected() { // --- Arrange InstallWorksAsExpected(); const string LOG1 = "_myLog1"; const string LOG2 = "_myLog2"; var data = new EventLogCreationData(); data.Add(LOG1, "Source1"); data.Add(LOG1, "Source2"); data.Add(LOG2, "Source3"); data.Add(LOG2, "Source4"); // --- Act var result = WindowsEventLogManager.RemoveEventLogSources(data); // --- Assert result.Errors.ShouldHaveCountOf(0); result.AffectedSources.ShouldHaveCountOf(2); result.AffectedSources[LOG1].ShouldHaveCountOf(2); result.AffectedSources[LOG1].ShouldContain("Source1"); result.AffectedSources[LOG1].ShouldContain("Source2"); result.AffectedSources[LOG2].ShouldHaveCountOf(2); result.AffectedSources[LOG2].ShouldContain("Source3"); result.AffectedSources[LOG2].ShouldContain("Source4"); EventLog.SourceExists("Source1", ".").ShouldBeFalse(); EventLog.SourceExists("Source2", ".").ShouldBeFalse(); EventLog.SourceExists("Source3", ".").ShouldBeFalse(); EventLog.SourceExists("Source4", ".").ShouldBeFalse(); }
public void InstallWorksFromAssemblyExpected() { // --- Arrange if (EventLog.Exists(SEEMPLEST_LOG)) EventLog.Delete(SEEMPLEST_LOG); if (EventLog.Exists(SEEMPLEST_LOG2)) EventLog.Delete(SEEMPLEST_LOG2); var data = new EventLogCreationData(); data.Clear(); data.MergeSourcesFromAssembly(Assembly.GetExecutingAssembly()); // --- Act var result = WindowsEventLogManager.InstallEventLogSources(data); // --- Assert result.Errors.ShouldHaveCountOf(0); result.AffectedSources.ShouldHaveCountOf(2); result.AffectedSources[SEEMPLEST_LOG].ShouldHaveCountOf(2); result.AffectedSources[SEEMPLEST_LOG].ShouldContain("Source1"); result.AffectedSources[SEEMPLEST_LOG].ShouldContain("Source2"); result.AffectedSources[SEEMPLEST_LOG2].ShouldHaveCountOf(1); result.AffectedSources[SEEMPLEST_LOG2].ShouldContain("Source3"); EventLog.LogNameFromSourceName("Source1", ".").ShouldEqual(SEEMPLEST_LOG); EventLog.LogNameFromSourceName("Source2", ".").ShouldEqual(SEEMPLEST_LOG); EventLog.LogNameFromSourceName("Source3", ".").ShouldEqual(SEEMPLEST_LOG2); }
public void InstallWorksAsExpectedWithMappers() { // --- Arrange const string LOG1 = "_myLog1"; const string LOG2 = "_myLog2"; if (EventLog.Exists(LOG1 + "L")) EventLog.Delete(LOG1); if (EventLog.Exists(LOG2 + "L")) EventLog.Delete(LOG2); var data = new EventLogCreationData(); var mapper = new DummyNameMapper(); data.Add(LOG1, "Source1", mapper, mapper); data.Add(LOG1, "Source2", mapper, mapper); data.Add(LOG2, "Source3", mapper, mapper); data.Add(LOG2, "Source4", mapper, mapper); // --- Act var result = WindowsEventLogManager.InstallEventLogSources(data); // --- Assert result.Errors.ShouldHaveCountOf(0); result.AffectedSources.ShouldHaveCountOf(2); result.AffectedSources[LOG1 + "L"].ShouldHaveCountOf(2); result.AffectedSources[LOG1 + "L"].ShouldContain("Source1L"); result.AffectedSources[LOG1 + "L"].ShouldContain("Source2L"); result.AffectedSources[LOG2 + "L"].ShouldHaveCountOf(2); result.AffectedSources[LOG2 + "L"].ShouldContain("Source3L"); result.AffectedSources[LOG2 + "L"].ShouldContain("Source4L"); EventLog.LogNameFromSourceName("Source1L", ".").ShouldEqual(LOG1 + "L"); EventLog.LogNameFromSourceName("Source2L", ".").ShouldEqual(LOG1 + "L"); EventLog.LogNameFromSourceName("Source3L", ".").ShouldEqual(LOG2 + "L"); EventLog.LogNameFromSourceName("Source4L", ".").ShouldEqual(LOG2 + "L"); }