主要问题是:如何将 Logentries 集成到基于 Xamarin 的移动应用程序中?考虑到以下两种方式:Serilog 和 log4net。
Logentries 原生支持Android、iOS、WP,但在使用 Xamarin 代理这些 API 时不支持。Serilog是围绕 Logentries API 的一个优雅的 C# 包装器,但是在同一个项目中安装所有需要的组件以及 Xamarin 的组件时出现问题。Visual Studio 被用作 IDE,NuGet 被用作包管理器。我认为应该使用 NuGet 安装的包是Serilog、Serilog.Mobile、Serilog.Sinks.Logentries。使用 Xamarin 创建 Android 应用程序时,正在使用 Mono.Android 模块。Serilog 与 Mono.Android 完美共存,但 Serilog.Mobile 和 Serilog.Sinks.Logentries 不能:
错误:无法安装包“ Serilog.Sinks.Logentries 1.5.8”。您正在尝试将此包安装到以“ Xamarin.iOS ,Version=v1.0”为目标的项目中,但该包不包含任何与该框架兼容的程序集引用或内容文件。有关详细信息,请联系包作者。
Serilog.Mobile 的错误消息是相同的。
使用 Xamarin.iOS 时,唯一不兼容的模块恰好是 Serilog.Sinks.Logentries:
错误:无法安装包“ Serilog.Sinks.Logentries 1.5.8”。您正在尝试将此包安装到以“ MonoAndroid ,Version=v6.0”为目标的项目中,但该包不包含任何与该框架兼容的程序集引用或内容文件。有关详细信息,请联系包作者。
看到有一个Xamarin Serilog "sink"。由创建 Logentries 的同一个人编写。在我看来,它只是移植了 Serilog 库,并为 Android 的 Log 类和 iOS 的 NSLog 提供了便利的记录器:
ILogger androidLogger = new Serilog.LoggerConfiguration().WriteTo.AndroidLog().CreateLogger();
ILogger iosLogger = new Serilog.LoggerConfiguration().WriteTo.NSLog().CreateLogger();
所以第一个问题是,如果 Serilog 即将用于基于 Xamarin 的应用程序,那怎么会发生呢?
log4net 是Logentries C# 端口的另一个选项,但可能又不是 Xamarin,而是桌面应用程序。只是调查一下,显然有一些适用于 iOS 的端口。
如果您可以向我推荐正确的方法来使用 Logentries 与 Xamarin,那就太好了。