MVVMCROSS在ViewModel外部使用MvxLog

时间:2018-11-16 16:32:50

标签: xamarin logging mvvmcross multiplatform

直到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());
    }
}

如何在“视图”和“模型”级别使用IMvxLog?

谢谢!

1 个答案:

答案 0 :(得分:1)

只需解决与IoCProvider的接口:

对于Mvx> = 6.2

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

对于Mvx <6.2

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

然后您就做

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

HIH