1

主要问题是:如何将 Logentries 集成到基于 Xamarin 的移动应用程序中?考虑到以下两种方式:Serilog 和 log4net。

Logentries 原生支持Android、iOS、WP,但在使用 Xamarin 代理这些 API 时不支持。Serilog是围绕 Logentries API 的一个优雅的 C# 包装器,但是在同一个项目中安装所有需要的组件以及 Xamarin 的组件时出现问题。Visual Studio 被用作 IDE,NuGet 被用作包管理器。我认为应该使用 NuGet 安装的包是SerilogSerilog.MobileSerilog.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,那就太好了。

4

1 回答 1

2

听起来您需要下载 Logentries 接收器的源代码并自己为 Xamarin 重新编译它。(Serilog 对 Xamarin 平台的支持很少,因为在无需购买许可证的情况下很难获得工具/运行构建。如果您可以改进https://github.com/serilog/serilog-sinks-logentries存储库,请提交 PR在那里启用 Xamarin 支持无疑会受到欢迎。)

于 2015-12-18T23:10:57.417 回答