MvvmCross 自定义日志提供程序

MvvmCross custom log provider

我正在尝试实现我自己的日志提供程序。

Setup.cs 包含:

protected override MvxLogProviderType GetDefaultLogProviderType() => MvxLogProviderType.None;

protected override IMvxLogProvider CreateLogProvider()
{
    var logger = new Logger();
    return base.CreateLogProvider();
}

Logger.cs

public class Logger : IMvxLog
{
    public bool Log(MvxLogLevel logLevel, Func<string> messageFunc, Exception exception = null, params object[] formatParameters)
    {
        var client = new HttpClient();
        var url = new Uri("https://jsonplaceholder.typicode.com/posts/1");
        client.PostAsync(url,null);
        return true;
    }
}

当 IoC 尝试解决依赖关系时,ViewModel 构造函数崩溃。

错误信息:

Failed to resolve parameter for parameter log of type IMvxLog when creating eOrder.ViewModel.ActivitiesViewModel

也许我不需要覆盖 MvxLogProviderType.None

你 return 在 CreateLogProvider() 中的基础,并且由于你将 GetDefaultLogProviderType 设置为 None,那将 return null

第二个问题是您实现了 IMvxLog,而不是 IMvxLogProvider。尝试实现那个,return 在设置中而不是基础中。

可以在以下位置找到更多信息:https://www.mvvmcross.com/documentation/fundamentals/logging#customize-the-log-provider

并不是说那里的自定义示例代码使用了 Serilog,并且正在访问静态实例。

protected override IMvxLogProvider CreateLogProvider()
{
    Log.Logger = new LoggerConfiguration()
                .MinimumLevel.Debug()
                .WriteTo.LiterateConsole()
                .WriteTo.AndroidLog()
                .CreateLogger();
    return base.CreateLogProvider();
}