【发布时间】:2015-12-19 07:10:57
【问题描述】:
主要问题是:如何将 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# port 的另一个选项,但可能又不是 Xamarin 而是桌面应用程序。只是调查一下,显然有一些适用于 iOS 的 ports。
如果您能向我推荐将 Logentries 与 Xamarin 结合使用的正确方法,那就太好了。
【问题讨论】:
标签: logging xamarin log4net serilog logentries