Bit*_*ian 3 c# error-handling windows-runtime mvvmcross windows-store-apps
我正在使用Mvvmcross构建跨平台应用程序.我想知道Mvvmcross库中是否存在已构建的错误日志记录框架.
我正在寻找能将所有错误记录到应用程序数据中的文件中的内容.我可以在Windows应用商店应用中构建自己的应用程序但是如何记录Core Library中出现的错误,因为我无法访问Application Data文件夹?
我看到了一个Mvx.Error()方法.它的目的是什么?
我看到了一个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