protected override void InitializeTargetObject() { base.InitializeTargetObject(); if (!string.IsNullOrWhiteSpace(ContextID)) { targetAuditLog = LoadObjectFromAPI <msAuditLog>(ContextID); } }
public static string LogException(Exception ex, Uri u) { //if there's no http context do not log //If we don't know what association this is we can't log either because a auditlog requires a wall to save if (HttpContext.Current == null || CurrentAssociation == null) return null; try { NameValueCollection queryStringVariables = new NameValueCollection(); if (u != null) queryStringVariables = HttpUtility.ParseQueryString(u.Query); string contextId = queryStringVariables["contextID"]; MemberSuiteObject contextObject = null; using (IConciergeAPIService proxy = ConciergeAPIProxyGenerator.GenerateProxy()) { //Get the current user details from the Concierge API LoginResult loginResult = proxy.WhoAmI().ResultValue; msUser currentUser = loginResult.PortalUser == null ? loginResult.User.ConvertTo<msUser>() : loginResult.PortalUser.ConvertTo<msUser>(); //If there's a specified context then get the details on the context object if (!string.IsNullOrWhiteSpace(contextId)) { ConciergeResult<MemberSuiteObject> getResult = proxy.Get(contextId); if (getResult.Success) contextObject = getResult.ResultValue; } msAuditLog auditLog = constructAuditLog(currentUser, ex, contextId, contextObject); ConciergeResult<MemberSuiteObject> saveResult = proxy.RecordErrorAuditLog(auditLog); if (saveResult.Success) return saveResult.ResultValue.SafeGetValue<string>("ID"); } } catch(Exception e) { Console.WriteLine("Unable to log exception."); Console.WriteLine(e.ToString()); Console.WriteLine(ex.ToString()); } return null; }
private static msAuditLog constructAuditLog(msUser currentUser, Exception ex, string contextId, MemberSuiteObject contextObject) { msAuditLog result = new msAuditLog(); result.AffectedRecord_ID = contextId; result.Type = AuditLogType.Error; if (currentUser != null) result.Actor = currentUser.ID; if (contextObject != null) { result.AffectedRecord_Type = contextObject.ClassType; result.AffectedRecord_Name = contextObject.SafeGetValue<string>("Name"); } result.Description = ex.ToString(); return result; }