Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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);
            }
        }