private async Task WriteIncommingMessagesLog(CoreComMessageResponse request) { if (_coreComOptions.LogSettings.LogMessageTarget != LogMessageTargetEnum.TextFile) { return; } // Set a variable to the Documents path. string docPath = FileSystem.AppDataDirectory;// Environment.CurrentDirectory; // Write the specified text asynchronously to a new file named "WriteTextAsync.txt". using (StreamWriter outputFile = new StreamWriter(Path.Combine(docPath, "IncommingMessages.log"), true)) { await outputFile.WriteLineAsync(DateTime.UtcNow.ToString() + "\t" + request.CoreComMessageResponseId + "\t" + request.MessageSignature + "\t" + request.ClientId + "\t" + request.TransactionIdentifier + "\t" + ((TransferStatusEnum)request.TransferStatus).ToString() + "\t" + request.CalculateSize().ToString() + Environment.NewLine); } }
internal async virtual void LogEventOccurred(CoreComContext dbContext, CoreComMessageResponse coreComMessageResponse) { LogEvent logEvent = new LogEvent { Description = coreComMessageResponse.MessageSignature, TransferStatus = (TransferStatusEnum)coreComMessageResponse.TransferStatus, MessageSize = coreComMessageResponse.CalculateSize() }; //Messages switch (_coreComOptions.LogSettings.LogMessageTarget) { case LogMessageTargetEnum.Database: //allways remove CoreComInternal from incomming table/ the massage is new so it does not exist in table if (coreComMessageResponse.MessageSignature != CoreComInternalSignatures.CoreComInternal_PullQueue) { //add incomming message to db coreComMessageResponse.CoreComMessageResponseId = Guid.NewGuid().ToString(); dbContext.IncomingMessages.Add(coreComMessageResponse); } break; case LogMessageTargetEnum.TextFile: if (coreComMessageResponse.MessageSignature != CoreComInternalSignatures.CoreComInternal_PullQueue) { //add incomming message to file await WriteIncommingMessagesLog(coreComMessageResponse); } break; case LogMessageTargetEnum.NoLoging: //dbContext.OutgoingMessages.Remove(coreComMessage); break; default: break; } //Events switch (_coreComOptions.LogSettings.LogEventTarget) { case LogEventTargetEnum.Database: if (coreComMessageResponse.TransferStatus != (int)TransferStatusEnum.New) { await dbContext.LogEvents.AddAsync(logEvent); } break; case LogEventTargetEnum.TextFile: await WriteEventLogtoFile(logEvent); break; case LogEventTargetEnum.NoLoging: break; default: break; } await dbContext.SaveChangesAsync().ConfigureAwait(false); EventHandler <LogEvent> handler = OnLogEventOccurred; if (handler != null) { handler(this, logEvent); } }
internal async virtual void LogEventOccurred(CoreComContext dbContext, CoreComMessageResponse coreComMessageResponse) { LogEvent logEvent = new LogEvent { Description = coreComMessageResponse.MessageSignature, ClientId = coreComMessageResponse.ClientId, TransactionIdentifier = coreComMessageResponse.TransactionIdentifier, TransferStatus = (TransferStatusEnum)coreComMessageResponse.TransferStatus, MessageSize = coreComMessageResponse.CalculateSize() }; //allways add to new outgoing to database if (coreComMessageResponse.TransferStatus == (int)TransferStatusEnum.New) { dbContext.OutgoingMessages.Add(coreComMessageResponse); } //Messages switch (_coreComOptions.LogSettings.LogMessageTarget) { case LogMessageTargetEnum.Database: //status change will be writen to database on dbContext.SaveChangesAsync //we don't save Pullqueue messages if (coreComMessageResponse.TransferStatus == (int)TransferStatusEnum.Transferred && coreComMessageResponse.MessageSignature == CoreComInternalSignatures.CoreComInternal_PullQueue) { //remove message dbContext.OutgoingMessages.Remove(coreComMessageResponse); } break; case LogMessageTargetEnum.TextFile: //Create textfile log //add response message to file await WriteOutgoingMessagesLog(coreComMessageResponse); break; case LogMessageTargetEnum.NoLoging: if (coreComMessageResponse.TransferStatus == (int)TransferStatusEnum.Transferred) { //remove message dbContext.OutgoingMessages.Remove(coreComMessageResponse); } break; default: break; } //Events switch (_coreComOptions.LogSettings.LogEventTarget) { case LogEventTargetEnum.Database: if (coreComMessageResponse.TransferStatus != (int)TransferStatusEnum.New) { await dbContext.LogEvents.AddAsync(logEvent); } break; case LogEventTargetEnum.TextFile: //Create textfile log await WriteEventLogtoFile(logEvent).ConfigureAwait(false); break; case LogEventTargetEnum.NoLoging: break; default: break; } await dbContext.SaveChangesAsync().ConfigureAwait(false); EventHandler <LogEvent> handler = OnLogEventOccurred; if (handler != null) { handler(this, logEvent); } }