Mvvmcross中是否有任何错误记录框架?

Bit*_*ian 3 c# error-handling windows-runtime mvvmcross windows-store-apps

我正在使用Mvvmcross构建跨平台应用程序.我想知道Mvvmcross库中是否存在已构建的错误日志记录框架.

我正在寻找能将所有错误记录到应用程序数据中的文件中的内容.我可以在Windows应用商店应用中构建自己的应用程序但是如何记录Core Library中出现的错误,因为我无法访问Application Data文件夹?

我看到了一个Mvx.Error()方法.它的目的是什么?

Stu*_*art 6

我看到了一个Mvx.Error()方法.它的目的是什么?

Mvx.Trace(),Mvx.Warning()Mvx.Error()提供简单的API来记录信息.

日志输出本身会转到注册期间的单例Setup.您可以轻松实现自己的实现:

public class DebugTrace : IMvxTrace
{
    public void Trace(MvxTraceLevel level, string tag, Func<string> message)
    {
        Debug.WriteLine(tag + ":" + level + ":" + message());
    }

    public void Trace(MvxTraceLevel level, string tag, string message)
    {
        Debug.WriteLine(tag + ":" + level + ":" + message);
    }

    public void Trace(MvxTraceLevel level, string tag, string message, params object[] args)
    {
        try
        {
            Debug.WriteLine(string.Format(tag + ":" + level + ":" + message, args));
        }
        catch (FormatException)
        {
            Trace(MvxTraceLevel.Error, tag, "Exception during trace of {0} {1} {2}", level, message);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这可以在以下期间轻松注册Setup:

public class Setup : MvxAndroidSetup
{
    public Setup(Context applicationContext) : base(applicationContext)
    {
    }

    protected override IMvxApplication CreateApp()
    {
        return new Core.App();
    }

    protected override IMvxTrace CreateDebugTrace()
    {
        return new DebugTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

在应用程序中,我通常Core使用一个或多个唯一的tags 在类中实现我自己的特定于应用程序的日志记录- 这允许我对标记进行过滤 - 例如,我可能具有以下内容:

public static class MyApp
{
    public static void NetTrace(string message, params object[] args)
    {
        Mvx.TaggedTrace("MyAppNet", message, args);
    }

    public static void NetError(string message, params object[] args)
    {
        Mvx.TaggedError("MyAppNet", message, args);
    }

    public static void VmTrace(string message, params object[] args)
    {
        Mvx.TaggedTrace("MyAppVm", message, args);
    }

    public static void VmError(string message, params object[] args)
    {
        Mvx.TaggedError("MyAppVm", message, args);
    }
}
Run Code Online (Sandbox Code Playgroud)

对于在调试器外部进行日志记录,有几个库 - 例如NLog之类的东西 - 您可以轻松地连接到它们 MvxTrace