private void Write(APICallLogEntry entry) { string fileName = string.Format("{0:0000000000000000000000000}.xml", entryCount++); string entryPath = Path.Combine(directoryPath, fileName); string xml = APICallLogEntry.ToXml(entry).ToString(); TrustedMethods.WriteAllText(entryPath, xml); }
public static APICallLogEntry FromXml(XElement element) { APICallLogEntry entry = new APICallLogEntry(element.Name.LocalName, element.Element("arguments").Elements().Select(argument => new KeyValuePair <string, string>(argument.Name.LocalName, Encoding.UTF8.GetString(Convert.FromBase64String(argument.Value))))); entry.StackTrace = element.Element("stack").Value; return(entry); }
internal void Add(APICallLogEntry entry) { bool inCall = InCall; // need to increase depth even if we do nothing, as the caller will pop either way Push(); if (inCall || !Enabled) { return; } Write(entry); }
public static XElement ToXml(APICallLogEntry entry) { XElement element = new XElement(entry.MethodName); XElement arguments = new XElement("arguments"); element.Add(arguments); foreach (KeyValuePair <string, string> pair in entry.Arguments) { arguments.Add(new XElement(pair.Key, Convert.ToBase64String(Encoding.UTF8.GetBytes(pair.Value)))); } XElement stack = new XElement("stack", entry.StackTrace); element.Add(stack); return(element); }