我正在使用 MvvmCross。
在库中,我看到了 Mvx.Trace 方法的用法,但没有输出到控制台/输出窗口。
如何使用它?
p.s.我已经设置了编译器常量 Trace = true
谢谢。
最佳答案
MvvmCross DebugTrace 全部通过IMvxTrace
的单例实现路由。
每个平台都提供了不同的实现:
Debug
跟踪(因为 Trace
本身并非在所有 Windows 平台上都可用)Debug
的双日志和安卓 log
Debug
的双重日志和 iOS Console
这在 MvvmCross 的早期版本中运行良好,尤其是人们直接链接到 MvvmCross 源代码,因此可以直接绑定(bind)到调试或发布 MvvmCross 二进制文件。
但是...因为人们现在越来越多地使用 Nuget 的发行版二进制文件 - 其中
Debug
当然是编译出来的,那么这经常会让人问“怎么用?”最简单的方法是在您的
Setup
中覆盖 IMvxTrace 的初始化。类(class)。这很容易做到 - 例如:
protected override IMvxTrace CreateDebugTrace() { return new MyDebugTrace(); }
在哪里
MyDebugTrace
是这样的:public class MyDebugTrace : 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);
}
}
}
如果您想包含不同的调试/发布实现;如果您想在运行时打开/关闭它;如果您想过滤
MvxTraceLevel
或 tag
;或者如果您想使用一些第三方日志引擎,那么在每个平台上使用简单的 C# 也应该很容易做到这一点。
关于mono - MvvmCross Mvx.Trace 用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17233922/