public RaygunMessage BuildMessage(Exception exception, LoggingEvent loggingEvent, Dictionary <string, string> userCustomData, IMessageFilter exceptionFilter, IMessageFilter renderedMessageFilter, IgnoredDataSettings ignoredFieldSettings, string customApplicationVersion) { var raygunMessageBuilder = Mindscape.Raygun4Net.RaygunMessageBuilder.New; var httpContext = _httpContextFactory(); if (httpContext != null && httpContext.Instance != null) { LogLog.Debug(DeclaringType, "RaygunAppender: Setting http details on the raygun message from http context"); var messageOptions = new RaygunRequestMessageOptions( ignoredFieldSettings.IgnoredSensitiveFieldNames, ignoredFieldSettings.IgnoredQueryParameterNames, ignoredFieldSettings.IgnoredFormNames, ignoredFieldSettings.IgnoredHeaderNames, ignoredFieldSettings.IgnoredCookieNames, ignoredFieldSettings.IgnoredServerVariableNames) { IsRawDataIgnored = ignoredFieldSettings.IsRawDataIgnored }; raygunMessageBuilder.SetHttpDetails(httpContext.Instance, messageOptions); } raygunMessageBuilder .SetExceptionDetails(exception) .SetClientDetails() .SetTags(ExtractTags(loggingEvent.GetProperties())) .SetUser(ExtractAffectedUser(loggingEvent.GetProperties())) .SetEnvironmentDetails() .SetMachineName(Environment.MachineName) .SetVersion(GetApplicationVersion(customApplicationVersion)) .SetUserCustomData(FilterRenderedMessageInUserCustomData(userCustomData, renderedMessageFilter)); var raygunMessage = raygunMessageBuilder.Build(); if (exception != null) { if (raygunMessage.Details.Error != null) { raygunMessage.Details.Error.Message = exceptionFilter.ApplyTo(exception.Message); } } else { LogLog.Debug(DeclaringType, "RaygunAppender: No exception object found in error, creating raygun error message from the rendered message and calling class"); raygunMessage.Details.Error = new RaygunErrorMessage { Message = renderedMessageFilter.ApplyTo(loggingEvent.RenderedMessage), ClassName = loggingEvent.LocationInformation.ClassName }; } return(raygunMessage); }
private Dictionary <string, string> FilterRenderedMessageInUserCustomData(Dictionary <string, string> userCustomData, IMessageFilter renderedMessageFilter) { if (userCustomData.ContainsKey(UserCustomDataBuilder.UserCustomDataKey.RenderedMessage)) { var oldValue = userCustomData[UserCustomDataBuilder.UserCustomDataKey.RenderedMessage]; userCustomData[UserCustomDataBuilder.UserCustomDataKey.RenderedMessage] = renderedMessageFilter.ApplyTo(oldValue); } return(userCustomData); }