主な問題は、Logentries を Xamarin ベースのモバイル アプリに統合する方法です。以下の 2 つの方法が考慮されます: Serilog と log4net。
Logentries は、Android、iOS、WPをネイティブにサポートしますが、これらの API が Xamarin を使用してプロキシ化されている場合はサポートしません。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用のポートがいくつかあります。
Xamarin と連携して Logentries を使用するための正しいアプローチを教えていただければ幸いです。