我正在尝试实现自己的日志提供程序。
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构造函数中崩溃。
错误讯息: 消息=&#34;无法解析IMvxLog类型的参数日志的参数 在创建eOrder.ViewModel.ActivitiesViewModel&#34;
时也许我不需要覆盖MvxLogProviderType.None?
答案 0 :(得分:4)
您在CreateLogProvider()
中返回基数,并且由于您将GetDefaultLogProviderType
设置为None
,因此会返回null
。
第二个问题是您实施IMvxLog
,而不是IMvxLogProvider
。尝试实现那个,然后在设置而不是基础中返回。
可在以下网址找到更多信息: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();
}