MVVMCROSS 在 ViewModel 外部使用 MvxLog

MVVMCROSS Use MvxLog outside ViewModel

在 MvvmCross V5 之前,为了从 View、ViewModel、Model 中记录一些东西,我一直使用以下行:

Mvx.Trace($"lorem ");

现在我想将我的项目迁移到 MVVMCross 6,我发现这种方法已被弃用。现在需要 IMvxLog。

https://www.mvvmcross.com/documentation/fundamentals/logging 我只发现了一个与 ViewModel 级别的日志相关的样本。

public class MyViewModel : MvxViewModel
{
    private readonly IMvxLog _log;
    public MyViewModel(IMvxLogProvider logProvider)
    {
        _log = logProvider.GetLogFor<MyViewModel>();
    }

    private void SomeMethod()
    {
        _log.ErrorException("Some message", new Exception());
    }
}

如何在 "View" 和 "Model" 级别使用 IMvxLog?

谢谢!

只需解析与 IoCProvider 的接口:

对于 Mvx >= 6.2

var logProvider = Mvx.IoCProvider.Resolve<IMvxLogProvider>();

对于 Mvx < 6.2

var logProvider = Mvx.Resolve<IMvxLogProvider>();

然后你就做

var log = logProvider.GetLogFor<MyObject>();