Search code examples
xamarinloggingmvvmcrossmultiplatform

MVVMCROSS Use MvxLog outside ViewModel


Until MvvmCross V5 in order to log something from View, ViewModel, Model I have always used the following line:

Mvx.Trace($"lorem ");

Now I want to migrate my project to MVVMCross 6 and I see that this approach is deprecated. Now IMvxLog is required.

On https://www.mvvmcross.com/documentation/fundamentals/logging I have found only one sample related to log at ViewModel level.

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

How can I use IMvxLog at "View" and "Model" Level?

thank you!


Solution

  • Just resolve de interface with the IoCProvider:

    For Mvx >= 6.2

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

    For Mvx < 6.2

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

    and then you just do

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

    HIH