protected override void Write(LogEventInfo logEvent) { if (logEvent.Exception == null) { return; } _client = new HoptoadClient(ApiKey, AggregatorUrl); string logMessage = logEvent.Exception.ToString(); string stackTrace = logEvent.Exception.StackTrace.ToString(); string[] lines = stackTrace.Split('\n'); IList<HoptoadBackTrack> backTracks = new List<HoptoadBackTrack>(); foreach (var line in lines) { char[] delims = { ' ', ',', ':', '\t', '<','>' }; Console.WriteLine("line: " + line); string[] words = line.Split(delims); string fileName = words[10]; string lineNumber = words[12]; string methodName = words[3]; Console.WriteLine("file #: " + fileName); Console.WriteLine("line #: " + lineNumber); Console.WriteLine("method: " + methodName); //line //file //method backTracks.Add(new HoptoadBackTrack(lineNumber, fileName, methodName)); } HoptoadMessage message = new HoptoadMessage( _appName, _appVersion, _appUrl, logEvent.Exception.GetType().ToString(), logMessage, backTracks, "", _environmentName); Console.WriteLine("Sending exception data to hoptoad url"); _client.Send(message); }
public void Send(HoptoadMessage message) { notice notice = new notice { version = "2.0", apikey = _apiKey, notifier = new notifier { name = message.AppName, version = message.AppVersion, url = message.AppUrl }, error = new error { @class = message.ErrorClass, message = message.ErrorMessage } }; IList<backtraceLine> backtraceLines = new List<backtraceLine>(); foreach (HoptoadBackTrack backTrack in message.BackTracks) { backtraceLines.Add(new backtraceLine() { file = backTrack.FileName, method = backTrack.MethodName, number = backTrack.LineNumber }); } notice.error.backtrace = backtraceLines.ToArray(); notice.serverenvironment = new serverEnvironment { environmentname = message.EnvironmentName }; StringBuilder sb = new StringBuilder(); using (StringWriter sw = new StringWriterWithEncoding(sb, Encoding.UTF8)) { Console.WriteLine(sw.Encoding.EncodingName.ToString()); XmlSerializer serializer = new XmlSerializer(typeof(notice)); serializer.Serialize(sw, notice); } Console.WriteLine("This is the document: " + sb.ToString()); // HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://hoptoadapp.com/notifier_api/v2/notices"); HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(_aggregatorUrl); request.Method = "POST"; request.ContentType = "text/xml; encoding='utf-8'"; byte[] encodedData = new UTF8Encoding().GetBytes(sb.ToString()); request.ContentLength = encodedData.Length; using (Stream newStream = request.GetRequestStream()) { newStream.Write(encodedData, 0, encodedData.Length); } HttpWebResponse response = (HttpWebResponse)request.GetResponse(); if (response.StatusCode != HttpStatusCode.OK) { throw new HoptoadException(response.StatusCode.ToString()); } }