private void OnLog(LogLevel loglevel, EventId eventid, object?state, Exception?exception,
                           Func <object, Exception?, string>?formatter)
        {
            if (state == null)
            {
                return;
            }

            Task.Run(() =>
            {
                var message = new LogMessageDto
                {
                    Message  = (formatter != null ? formatter(state, exception) : state.ToString()),
                    LogLevel = loglevel
                };

                if (exception != null)
                {
                    message.Exception = new ExceptionDto
                    {
                        Type       = exception.GetType().FullName,
                        Message    = exception.Message,
                        StackTrace = exception.StackTrace
                    };
                }

                var buffer = SerializeMessage(PacketMessage, message);
                return(BroadcastAsync(buffer, ctx =>
                                      ctx.Items.ContainsKey("user") &&
                                      (bool)ctx.Items["canReadLogs"]));
            });
        }
        public Task OnActorMessage(WebConsoleUser user, string message)
        {
            var serializedMessage = new LogMessageDto {
                Message = message, LogLevel = LogLevel.Information
            };
            var json = SerializeMessage(PacketMessage, serializedMessage);

            return(SendAsync(user.Context, json));
        }
        public ResponseModel SaveLogMessage(LogMessageDto model)
        {
            //auto mapping
            LogMessageModel logMessage = mapper.Map <LogMessageModel>(model);
            ResponseModel   response   = new ResponseModel();

            // replace single quotes with double
            logMessage.Message      = CommonClass.ReplaceSingleQuotes(logMessage.Message);
            logMessage.Source       = CommonClass.ReplaceSingleQuotes(logMessage.Source);
            logMessage.Serverdetail = CommonClass.ReplaceSingleQuotes(logMessage.Serverdetail);
            logMessage.Summary      = CommonClass.ReplaceSingleQuotes(logMessage.Summary);
            logMessage.Tag1         = CommonClass.ReplaceSingleQuotes(logMessage.Tag1);
            logMessage.Tag2         = CommonClass.ReplaceSingleQuotes(logMessage.Tag2);

            logMessage.EventCategoryId = CommonClass.GetCategoryId(model.Category);

            if (logMessage.EventCategoryId == 0)
            {
                response.Message    = "input category not defined in system.";
                response.StatusCode = "400";
                return(response);
            }

            // Getting attached file
            var attachedFile = model.AttachedFile;

            // Saving attached file on server
            if (attachedFile != null)
            {
                //modify file name with data
                var fileName  = Path.GetFileNameWithoutExtension(attachedFile.FileName);
                var extension = Path.GetExtension(attachedFile.FileName);
                fileName = fileName + '_' + DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss") + extension;
                logMessage.Attachment = fileName;

                //saving data into database
                logMessagesRepository.SaveLogMessage(logMessage);
                response.Message = "success"; response.StatusCode = "200";

                //file saving to s3 bucket.
                CommonClass.UploadFileToS3(attachedFile, fileName, awsAccessKey, awsSecreteKey, bucketName);
            }
            else
            {
                //saving data into database
                logMessagesRepository.SaveLogMessage(logMessage);
                response.Message = "success"; response.StatusCode = "200";
            }
            return(response);
        }
예제 #4
0
        // We are Receiving and Returning DTOs instead the of the Domain Model (is represented as domain just for showcase, though in the current scenario we don't need any, as the application dosen't contain any bussiness logic), for it is a good practice unless maybe it is a basic crud operation. Returning a DTO for current action is overly complicated as the Core model suffice for the data that needs to be returned for the view and as mentioned the Application is prettly simple.
        public async Task <ApiLogMessageDto> SendLogMessage(LogMessageDto logMessage)
        {
            // Generate the Domain model
            var airTableLogMessage = new LogMessage(logMessage.Title, logMessage.Text);

            // Call to infrastracture service.
            var response = await _airTableLogMessageService.SendLogMessage(airTableLogMessage);

            // We are not doing anyting with the Response.
            // Maybe if needed we could store the log locally.

            // Since the response data dose not contain any information from the response we got back from the AirTableService, we map back directly from the Domain model.
            return(new ApiLogMessageDto(airTableLogMessage.Id.ToString(), airTableLogMessage.Summary, airTableLogMessage.Message, airTableLogMessage.ReceivedAt));
        }
예제 #5
0
        // [RequestSizeLimit(500000000)]
        public ActionResult AttachedFileWithData([FromForm] LogMessageDto model)
        {
            var response = logMessagesService.SaveLogMessage(model);

            return(Ok(new { status = response.StatusCode, message = response.Message }));
        }
예제 #6
0
        public async Task <ActionResult <ApiLogMessageDto> > LogMessage([FromBody] LogMessageDto logMessage)
        {
            var loggedMessage = await _handler.SendLogMessage(logMessage);

            return(CreatedAtAction(nameof(GetLogMessage), new { id = loggedMessage.Id }, loggedMessage));
        }
 protected virtual void OnMessageReceived( LogMessageDto message )
 {
     var handler = MessageReceived;
     handler?.Invoke( message );
 }
 public void ReceiveLogMessage( LogMessageDto message )
 {
     OnMessageReceived( message );
 }
        protected virtual void OnMessageReceived(LogMessageDto message)
        {
            var handler = MessageReceived;

            handler?.Invoke(message);
        }
 public void ReceiveLogMessage(LogMessageDto message)
 {
     OnMessageReceived(message);
 }