protected override void Write(LogEventInfo logEvent) { _raygunClient = _raygunClient ?? (_raygunClient = CreateRaygunClient()); Exception exception = ExtractException(logEvent); var tags = ExtractTags(logEvent, exception); Dictionary <string, object> userCustomData = ExtractProperties(logEvent); string layoutLogMessage = Layout.Render(logEvent); userCustomData["RenderedLogMessage"] = layoutLogMessage; userCustomData["LogMessageTemplate"] = logEvent.Message; if (exception == null) { exception = new RaygunException(layoutLogMessage); } string userIdentityInfo = UserIdentityInfo != null?UserIdentityInfo.Render(logEvent) : string.Empty; var userIdentity = string.IsNullOrEmpty(userIdentityInfo) ? null : new RaygunIdentifierMessage(userIdentityInfo); _raygunClient.UserInfo = userIdentity; _raygunClient.SendInBackground(exception, tags, userCustomData); }