From b452456d9d770859792c124b0fda929efb0e19bb Mon Sep 17 00:00:00 2001 From: leo Date: Tue, 9 Nov 2021 10:21:31 +0800 Subject: [PATCH] feature: always generate crash log file instead of report to gitee.com --- src/Models/Issue.cs | 75 ++++++++++----------------------------- src/Models/Preference.cs | 5 --- src/Views/Preference.xaml | 11 ++---- 3 files changed, 20 insertions(+), 71 deletions(-) diff --git a/src/Models/Issue.cs b/src/Models/Issue.cs index 36a069ed..52e531d6 100644 --- a/src/Models/Issue.cs +++ b/src/Models/Issue.cs @@ -1,70 +1,31 @@ using System; using System.Reflection; +using System.IO; using System.Text; -using System.Text.Json; -using System.Text.Json.Serialization; - -#if NET6_0_OR_GREATER -using System.Net.Http; -#else -using System.Net; -#endif +using System.Diagnostics; namespace SourceGit.Models { /// - /// 崩溃日志上报 + /// 崩溃日志生成 /// public class Issue { - [JsonPropertyName("access_token")] - public string AccessToken { get; set; } - [JsonPropertyName("repo")] - public string Repo { get; set; } - [JsonPropertyName("title")] - public string Title { get; set; } - [JsonPropertyName("body")] - public string Body { get; set; } - - /// - /// 创建Gitee平台ISSUE - /// - /// public static void Create(System.Exception e) { - if (!Preference.Instance.General.EnableCrashReport) return; + var builder = new StringBuilder(); + builder.Append("Crash: "); + builder.Append(e.Message); + builder.Append("\n\n"); + builder.Append("----------------------------\n"); + builder.Append($"Windows OS: {Environment.OSVersion}\n"); + builder.Append($"Version: {Assembly.GetExecutingAssembly().GetName().Version}"); + builder.Append($"Platform: {AppDomain.CurrentDomain.SetupInformation.TargetFrameworkName}"); + builder.Append($"Source: {e.Source}"); + builder.Append($"---------------------------\n\n"); + builder.Append(e.StackTrace); - try { - var issue = new Issue(); - issue.AccessToken = "d0d56410f13a3826b87fb0868d5a26ce"; // 这是我个人的Token,仅启用ISSUE创建功能,请不要使用 - issue.Repo = "sourcegit"; - issue.Title = "CrashReport: " + e.Message; - issue.Body = string.Format( - "{0}\n\n**Base Information:**\n\n| Windows OS | {1} |\n|---|---|\n| Version | {2} |\n| Platform | {3} |\n\n**Source:** {4}\n\n**StackTrace:**\n\n ```\n{5}\n```\n", - e.Message, - Environment.OSVersion.ToString(), - Assembly.GetExecutingAssembly().GetName().Version.ToString(), - AppDomain.CurrentDomain.SetupInformation.TargetFrameworkName, - e.Source, - e.StackTrace); - -#if NET6_0_OR_GREATER - var content = new StringContent(JsonSerializer.Serialize(issue), Encoding.UTF8, "application/json"); - var req = new HttpClient() { Timeout = TimeSpan.FromSeconds(1) }; - req.PostAsync("https://gitee.com/api/v5/repos/sourcegit/issues", content).Wait(); -#else - var req = WebRequest.CreateHttp("https://gitee.com/api/v5/repos/sourcegit/issues"); - req.Method = "POST"; - req.ContentType = "application/json"; - req.Headers.Add("charset", "UTF-8"); - req.Timeout = 1000; - - using (var writer = req.GetRequestStream()) { - var data = JsonSerializer.Serialize(issue); - var raw = Encoding.UTF8.GetBytes(data); - writer.Write(raw, 0, raw.Length); - } - - req.GetResponse(); -#endif - } catch { } + var time = DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss"); + var file = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName); + file = Path.Combine(file, $"sourcegit_crash_{time}.log"); + File.WriteAllText(file, builder.ToString()); } } } diff --git a/src/Models/Preference.cs b/src/Models/Preference.cs index 4ba96233..077733ab 100644 --- a/src/Models/Preference.cs +++ b/src/Models/Preference.cs @@ -68,11 +68,6 @@ namespace SourceGit.Models { /// public int LastCheckDay { get; set; } = 0; - /// - /// 是否启用崩溃上报 - /// - public bool EnableCrashReport { get; set; } = false; - /// /// 是否尝试使用 Windows Terminal 打开终端 /// diff --git a/src/Views/Preference.xaml b/src/Views/Preference.xaml index 78a75ab3..95a48339 100644 --- a/src/Views/Preference.xaml +++ b/src/Views/Preference.xaml @@ -12,7 +12,7 @@ WindowStartupLocation="CenterOwner" ResizeMode="NoResize" Title="{DynamicResource Text.Preference}" - Width="500" Height="340"> + Width="500" Height="312"> @@ -68,7 +68,6 @@ - @@ -168,15 +167,9 @@ Content="{DynamicResource Text.Preference.RestoreTabs}" IsChecked="{Binding Source={x:Static models:Preference.Instance}, Path=Restore.IsEnabled, Mode=TwoWay}"/> - - -