Beispiel #1
0
        private ErrorLogEntry LoadErrorLogEntry(string path)
        {
            for (var i = 0; i < 5; i++)
            {
                try
                {
                    using var reader = XmlReader.Create(path, new XmlReaderSettings()
                    {
                        CheckCharacters = false
                    });
                    if (!reader.IsStartElement("error"))
                    {
                        return(null);
                    }

                    var id    = reader.GetAttribute("errorId");
                    var error = ErrorXml.Decode(reader);
                    return(new ErrorLogEntry(this, id, error));
                }
                catch (IOException)
                {
                    //ignored
                    Task.Delay(500).GetAwaiter().GetResult();
                }
            }

            throw new IOException("");
        }
Beispiel #2
0
        /// <summary>
        ///     Returns the specified error from the filesystem, or throws an exception if it does not exist.
        /// </summary>
        public override ErrorLogEntry GetError(string id)
        {
            try
            {
                id = new Guid(id).ToString(); // validate GUID
            }
            catch (FormatException e)
            {
                throw new ArgumentException(e.Message, id, e);
            }

            var file = new DirectoryInfo(LogPath).GetFiles($"error-*-{id}.xml")
                       .FirstOrDefault();

            if (file == null)
            {
                return(null);
            }

            if (!IsUserFile(file.Attributes))
            {
                return(null);
            }

            using var reader = XmlReader.Create(file.FullName);
            return(new ErrorLogEntry(this, id, ErrorXml.Decode(reader)));
        }
Beispiel #3
0
        private void ErrorsXmlToList(XmlReader reader, ICollection <ErrorLogEntry> errorEntryList)
        {
            Debug.Assert(reader != null);

            if (errorEntryList != null)
            {
                while (reader.IsStartElement("error"))
                {
                    string id    = reader.GetAttribute("errorId");
                    Error  error = ErrorXml.Decode(reader);
                    errorEntryList.Add(new ErrorLogEntry(this, id, error));
                }
            }
        }
Beispiel #4
0
        private ErrorLogEntry LoadErrorLogEntry(string path)
        {
            using (var reader = XmlReader.Create(path))
            {
                if (!reader.IsStartElement("error"))
                {
                    return(null);
                }

                var id    = reader.GetAttribute("errorId");
                var error = ErrorXml.Decode(reader);
                return(new ErrorLogEntry(this, id, error));
            }
        }