コード例 #1
0
        public static TestLoggerBackend.LogEntry ReadLogEntry(XElement node)
        {
            if (!node.Name.LocalName.Equals("LogEntry"))
            {
                throw new InternalErrorException();
            }

            TestLoggerBackend.EntryKind kind;
            if (!Enum.TryParse(node.Attribute("Kind").Value, out kind))
            {
                throw new InternalErrorException();
            }

            var text     = node.Attribute("Text").Value;
            var logLevel = int.Parse(node.Attribute("LogLevel").Value);

            Exception exception = null;
            var       error     = node.Element("Error");

            if (error != null)
            {
                var errorMessage = error.Attribute("Text").Value;
                var stackTrace   = error.Attribute("StackTrace");
                exception = new SavedException(errorMessage, stackTrace != null ? stackTrace.Value : null);
            }

            var category = node.Attribute("Category")?.Value;

            return(new TestLoggerBackend.LogEntry(kind, category, logLevel, text, exception));
        }
コード例 #2
0
        private static void SaveException(IFolder exceptionLogFolder, string title, string message, string stackTrace, string innerMessage, string innerStackTrace, Action <SavedException> onExceptionSaved)
        {
            exceptionLogFolder.CreateIfNecessary();

            var fileContents = "Title:\r\n" + title + "\r\nMessage:\r\n" + message + "\r\nStack trace:\r\n" + stackTrace + "\r\nInner message:\r\n" + innerMessage + "\r\nInner stack trace:\r\n" + innerStackTrace;
            var md5          = MD5.Create();
            var inputBytes   = Encoding.UTF8.GetBytes(fileContents);
            var hash         = md5.ComputeHash(inputBytes);
            var sb           = new StringBuilder();

            foreach (var t in hash)
            {
                sb.Append(t.ToString("X2"));
            }

            var exceptionName = "Exception-" + sb;
            var fileName      = exceptionLogFolder.FullName + '\\' + exceptionName + ".txt";

            File.WriteAllText(fileName, fileContents);

            var savedException = new SavedException {
                ExceptionName = exceptionName,
                FileContents  = fileContents,
                FileFullName  = fileName
            };

            onExceptionSaved(savedException);
        }