主要问题是:如何在基于Xamarin的移动应用程序中集成Logentries?考虑了以下两种方式:Serilog和log4net。
Logentries本机支持Android、iOS和WP,但当这些API使用Xamarin代理时则不支持。Serilog是Logentries API的一个优雅的C#包装器,但在同一个项目中安装它所需的所有组件以及Xamarin的组件时会出现问题。Visual Studio被用作IDE,NuGet被用作包管理器。我认为应该使用NuGet安装的软件包有Serilog、Serilg.Mobile、Serilog.Sinks.Logentries。当使用Xamarin创建Android应用程序时,正在使用Mono.Android模块。Serilog与Mono.Android完美共存,但Serilog.Mobile和Serilog.Sinks.Logentries没有:
错误:无法安装程序包'Serilog.Sinks.Logentries1.5.8'。您正在尝试将此程序包安装到目标项目中"Xamarin.iOS,Version=v1.0",但该包不包含任何与之兼容的程序集引用或内容文件框架有关详细信息,请与程序包作者联系。
Serial.Mobile.的错误消息相同
当使用Xamarin.iOS时,唯一不兼容的模块恰好是Serial.Sinks.Logentry:
错误:无法安装程序包'Serilog.Sinks.Logentries1.5.8'。您正在尝试将此程序包安装到目标项目中'MonoAndroid,Version=v6.0',但该软件包不包含任何与之兼容的程序集引用或内容文件框架有关详细信息,请与程序包作者联系。
看到有一个Xamarin Serilog"水槽"。由创建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结合使用的正确方法,那就太好了。
听起来您需要下载Logentries接收器的源代码,并为Xamarin自己重新编译它。(Serilog对Xamarin平台的支持是最低限度的,因为在不购买许可证的情况下很难获得工具/运行构建https://github.com/serilog/serilog-sinks-logentries存储库——一个能够支持Xamarin的PR无疑会受到欢迎。)