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();
}
我正在尝试实现我自己的日志提供程序。
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();
}