/// <summary> /// Initializes a message journal on the supplied /// <paramref name="configuration"/> /// </summary> /// <param name="configuration">The journal configuration</param> /// <returns>Returns a task whose result is the initialized message journal</returns> public async Task <IMessageJournal> InitMessageJournal(IConfiguration configuration) { var providerName = configuration?["provider"]; if (string.IsNullOrWhiteSpace(providerName)) { await _diagnosticService.EmitAsync( new DiagnosticEventBuilder(this, DiagnosticEventType.ConfigurationDefault) { Detail = "Message journal disabled" }.Build()); return(null); } var provider = GetProvider(providerName); var messageJournal = await provider.CreateMessageJournal(configuration); if (messageJournal == null) { return(null); } var messageJournalType = messageJournal.GetType().FullName; var categories = new List <MessageJournalCategory>(); var journalSentMessages = configuration?.GetValue("sent", true) ?? false; if (journalSentMessages) { categories.Add(MessageJournalCategory.Sent); } var journalReceivedMessages = configuration?.GetValue("received", true) ?? false; if (journalReceivedMessages) { categories.Add(MessageJournalCategory.Received); } var journalPublishedMessages = configuration?.GetValue("published", true) ?? false; if (journalPublishedMessages) { categories.Add(MessageJournalCategory.Published); } var filteredMessageJournalingService = new FilteredMessageJournal(messageJournal, categories); messageJournal = filteredMessageJournalingService; await _diagnosticService.EmitAsync( new DiagnosticEventBuilder(this, DiagnosticEventType.ComponentInitialization) { Detail = $"Message journal {messageJournalType} initialized" }.Build()); return(new SanitizedMessageJournal(messageJournal)); }
/// <summary> /// Initializes a message journal on the supplied /// <paramref name="configuration"/> /// </summary> /// <param name="configuration">The journal configuration</param> /// <returns>Returns a task whose result is the initialized message journal</returns> public async Task <IMessageJournal> InitMessageJournal(JournalingElement configuration) { var myConfig = configuration ?? new JournalingElement(); if (string.IsNullOrWhiteSpace(myConfig.Provider)) { await _diagnosticService.EmitAsync( new DiagnosticEventBuilder(this, DiagnosticEventType.ConfigurationDefault) { Detail = "Message journal disabled" }.Build()); return(null); } var provider = GetProvider(myConfig.Provider); var messageJournal = await provider.CreateMessageJournal(myConfig); if (messageJournal == null) { return(null); } var messageJournalType = messageJournal.GetType().FullName; var categories = new List <MessageJournalCategory>(); if (myConfig.JournalSentMessages) { categories.Add(MessageJournalCategory.Sent); } if (myConfig.JournalReceivedMessages) { categories.Add(MessageJournalCategory.Received); } if (myConfig.JournalPublishedMessages) { categories.Add(MessageJournalCategory.Published); } var filteredMessageJournalingService = new FilteredMessageJournal(messageJournal, categories); messageJournal = filteredMessageJournalingService; await _diagnosticService.EmitAsync( new DiagnosticEventBuilder(this, DiagnosticEventType.ComponentInitialization) { Detail = $"Message journal {messageJournalType} initialized" }.Build()); return(new SanitizedMessageJournal(messageJournal)); }