private async Task WriteOutgoingMessagesLog(CoreComMessage request) { if (_coreComOptions.LogSettings.LogMessageTarget != LogMessageTargetEnum.TextFile) { return; } // Set a variable to the Documents path. string docPath = FileSystem.AppDataDirectory; // Write the specified text asynchronously to a new file named "WriteTextAsync.txt". using (StreamWriter outputFile = new StreamWriter(Path.Combine(docPath, "OutgoningMessages.log"), true)) { await outputFile.WriteLineAsync(DateTime.UtcNow.ToString() + "\t" + request.CoreComMessageId + "\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, CoreComMessage coreComMessage) { LogEvent logEvent = new LogEvent { Description = coreComMessage.MessageSignature, TransferStatus = (TransferStatusEnum)coreComMessage.TransferStatus, MessageSize = coreComMessage.CalculateSize() }; //Messages switch (_coreComOptions.LogSettings.LogMessageTarget) { case LogMessageTargetEnum.Database: //allways remove CoreComInternal from outgoingmessage table if (coreComMessage.MessageSignature == CoreComInternalSignatures.CoreComInternal_PullQueue && coreComMessage.TransferStatus != (int)TransferStatusEnum.New) { dbContext.OutgoingMessages.Remove(coreComMessage); } //it's allready in db just update status break; case LogMessageTargetEnum.TextFile: await WriteOutgoingMessagesLog(coreComMessage); break; case LogMessageTargetEnum.NoLoging: if (coreComMessage.TransferStatus != (int)TransferStatusEnum.New) { dbContext.OutgoingMessages.Remove(coreComMessage); } break; default: break; } //Events switch (_coreComOptions.LogSettings.LogEventTarget) { case LogEventTargetEnum.Database: 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, CoreComMessage coreComMessage) { LogEvent logEvent = new LogEvent { Description = coreComMessage.MessageSignature, ClientId = coreComMessage.ClientId, TransactionIdentifier = coreComMessage.TransactionIdentifier, TransferStatus = (TransferStatusEnum)coreComMessage.TransferStatus, MessageSize = coreComMessage.CalculateSize() }; //Messages switch (_coreComOptions.LogSettings.LogMessageTarget) { case LogMessageTargetEnum.Database: //allways remove CoreComInternal from IncomingMessages table if (coreComMessage.MessageSignature != CoreComInternalSignatures.CoreComInternal_PullQueue) { //the same message can get recived many times if deadline exced has happend //its the TransactionIdentifier that connect them togheter coreComMessage.CoreComMessageId = Guid.NewGuid().ToString(); dbContext.IncomingMessages.Add(coreComMessage); } break; case LogMessageTargetEnum.TextFile: //Create textfile log if (coreComMessage.MessageSignature != CoreComInternalSignatures.CoreComInternal_PullQueue) { coreComMessage.CoreComMessageId = Guid.NewGuid().ToString(); await WriteIncommingMessagesLog(coreComMessage).ConfigureAwait(false); } break; case LogMessageTargetEnum.NoLoging: //if (coreComMessage.TransferStatus != (int)TransferStatusEnum.Recived) //{ // dbContext.IncomingMessages.Remove(coreComMessage); //} break; default: break; } //Events switch (_coreComOptions.LogSettings.LogEventTarget) { case LogEventTargetEnum.Database: 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); } }