Micrcroft App Center

Micrcroft App Center

介绍

App Center主要用到的是异常的捕获和事件分析,可以在代码中埋点,把想要的事件记录传到App Center,可以在有异常的时候吧异常的内容发送,和在程序崩溃时把崩溃信息记录下来,当应用再次启动时,会把上次记录好的崩溃信息传回, 这里比较好的一点是支持附件的上传,并且这里的免费版可以保存最多90天。下面是官方介绍:
开发人员可以使用 App Center 来生成、测试和分发应用程序。部署应用后,开发人员可以使用分析和诊断服务监视应用的状态和使用情况。
相关具体内容可以参考官方文档Visual Studio App Center Docs

首先用账号登录进去,然后在主页可以看到所有的应用菜单,add new可以新建应用或者组织。
Micrcroft App Center

新建一个组织

输入组织的名字就可以创建成功,在这里可以看到组织里有apps,就是组织的所有应用。然后可以对人员管理:合作者,团队,分配组。最后可以最组织进行管理,这里的设置可以设置组织名和组织的url,图标等。这里还有付费和云服务等功能,具体看官方文档。
Micrcroft App Center

新建一个应用

输入应用名称,选择图标,设置发行类型,所有者,操作系统和平台。创建成功的所有应用都会在all apps显示。进去可以看到可以对应用进行菜单栏。这里演示了一些常用的基本操作。
Micrcroft App Center

概述Overview

首先需要NuGet包到解决方案中,安装Microsoft.AppCenter.Analytics和Microsoft.AppCenter.Crashes包,这两个一个是采集事件埋点一个是崩溃日志报告。更多的学习资料和相关API都在官方帮助文档查到。
Micrcroft App Center
这里是开启App Center。

	string userId = System.Net.Dns.GetHostName();
#if DEBUG
    userId += "-DEBUG";
#endif
    AppCenter.SetUserId(userId);
    AppCenter.SetCountryCode("CN");
    AppCenter.Start(Constants.AppSecret,    // 这里我作为常量存起来了,在网页上的guid---"e6e7e15a-4dd5-4de9-a8df-f09310853959"
    	typeof(Analytics),
    	typeof(Crashes));

分析Analytics

这里可以看到分析的Overview显示了活跃的用户的折线图,每天访问的用户,会话的时间段,使用的设备,操作系统。
Micrcroft App Center

还可以看到用户的国家信息和语言,还有应用的版本使用情况。
Micrcroft App Center

这里的Events是对事件进行分析。点进去可以看到具体的信息。
Micrcroft App Center
Micrcroft App Center

这里的Log flow是所有会话的信息,当app开启会话一直到结束所有的事件信息都会在这里显示。时间是UTC时间。
Micrcroft App Center

这里是对事件进行分析上传。

Analytics.TrackEvent("Search", new Dictionary<string, string>() { { "pageName", text } });
Analytics.TrackEvent("Use", new Dictionary<string, string>() { { "pageName", this.GetType().Name } });

诊断Diagnostics

这里的Issues是所有的问题,这里可以分为让应用崩溃的异常Crashes的和记录的异常Errors。
Micrcroft App Center

点进去可以查看到异常的详细信息,点击报告Reports可以查看传过来的用户信息和异常的日志附件,下载就可以查看异常日志。
Micrcroft App Center
Micrcroft App Center
Micrcroft App Center

这里是对崩溃记录上传的附件,直接把最新的日志上传回去了。

Crashes.GetErrorAttachments = (ErrorReport) =>
{
	DirectoryInfo directoryInfo = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory + "\\Log\\Error");
	var fileInfos = directoryInfo.GetFiles();
    Array.Sort(fileInfos, delegate (FileInfo x, FileInfo y) { return y.CreationTime.CompareTo(x.CreationTime); });

    Logger.Log.Error(string.Format("program crashes, last start time {{{0}}}, error timr {{{1}}}, {2}", ErrorReport.AppStartTime.ToLocalTime(), ErrorReport.AppErrorTime.ToOffset(new TimeSpan(8, 0, 0)), ErrorReport.StackTrace));

    return new ErrorAttachmentLog[]
    {
        ErrorAttachmentLog.AttachmentWithBinary(File.ReadAllBytes(fileInfos[0].FullName),fileInfos[0].Name,"text")
    };
};

这里是在异常日志中把异常信息上传。

public static void Error(object message)
{
    if (message is Exception exception)
    {
        Crashes.TrackError(exception);
    }
    else
    {
        Crashes.TrackError(new Exception(message.ToString()));
    }
    LogManager.GetLogger(GetCurrentMethodFullName()).Error(message);
}

public static void Error(object message, Exception exception)
{
    Crashes.TrackError(exception);
    LogManager.GetLogger(GetCurrentMethodFullName()).Error(message, exception);
}
上一篇:防抖和节流


下一篇:MySQL的数据类型