コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }