問題タブ [serilog]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Serilog の出力から _typeTag を削除することは可能ですか?
Serilog を使用して、構造化されたログ データを Logstash 経由で Elasticsearch に書き込みます。このようにログメッセージにオブジェクトを書き込む場合
出力される JSON には、追加のプロパティ _typeTag が含まれます。このプロパティを除外することは可能ですか?
c# - asp.net 5アプリでSerilog RavenDbシンクが機能しない
私はセリログを見て、いくつかのテストを実行しています。これまでのところ、コンソールまたはファイルへの書き込みは正常に機能しています。ただし、RavenDb シンクで動作させるには運がありません。これをasp.net 5アプリで機能させようとしています。以下の記事をレビューしました。
http://nblumhardt.com/2015/05/diagnostic-logging-in-dnx-asp-net-5/ http://nblumhardt.com/2013/06/serilog-and-ravendb/
空のアプリから始めて、project.json に次の依存関係を追加しました。
dnxcore も削除しました。
次に、startup.cs に次のコードを追加しました。
すべてがファイルとコンソールに正常に記録され、ログ データベースが作成されますが、ログ エントリは RavenDb に保存されません。
さまざまなログレベルを試しました。バッチサイズを小さくしてみました。これはドキュメント ストアのライフサイクルと関係があるのではないかと考えたので、ConfigureServices
メソッドに次のコードを追加しました。
次に、ロガー構成コードをConfigure
メソッドに移動し、DI インスタンスを使用しましたが、それも機能しません。同じものを使用して、他のオブジェクトを RavenDb に保存できますDocumentStore
。
構成設定などを見逃していませんか?
azure - Serilog Seq Sink が常にイベントをキャプチャするとは限らない
Azure インスタンス (Windows Server 2012 R2 データセンター) で Seq を実行し、ローカル ワークステーションで実行されているコンソール アプリケーションから Serilog でログを記録しています。File、Console、および Seq の 3 つのシンクが構成されています。私は dnxcore50 でも実行しています (念のため、私のセットアップが十分に危険ではないと考えている場合に備えて)。すべてのイベントがコンソールとファイルに 100% 表示されます。Seq は、5 回以上の実行で約 1 回のイベントのみをキャプチャします。つまり、実行のすべてのイベントをキャプチャするか、まったくキャプチャしません。無料のシングル ユーザー ライセンスを使用して Seq を評価していますが、この動作の原因となる制限があることを示唆するものは見つかりませんでした。
ロガーに SelfLog.Out を設定しましたが、自己ログが少なくとも指定されたファイルに書き込むことができることを確認するために追加したテスト行以外は、何もログに記録しません。
助言がありますか?これは、プレリリースのすべてに取り組んで、最先端にいることの単なる副作用ですか?
c# - Serilog: mongoDB Capped Collection の存続時間?
Serilog は上限付きコレクションの期間をどのように実装しましたか? このコードを参照してください:
MongoDB のドキュメントによると、「TTL 機能」を上限付きコレクションと共に使用してドキュメントを保存することはできないためです。だから私は仮定しています:ライブラリはコード内で何らかの形でこれを追跡しますが、どうやってそれが十分に速いか疑問に思っています。
MongoDB Capped コレクション: https://docs.mongodb.org/manual/core/capped-collections/ Serilog の GitHub MongoDB シンク (ターゲット): https://github.com/serilog/serilog-sinks-mongodb
おそらく、TTL ドキュメントと一緒に通常のコレクションを使用して、独自の Sink を作成することさえ簡単になるでしょう。
logging - Logentries + Xamarin = どうやって?
主な問題は、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 に便利なロガーを提供しているだけです。
最初の質問は、Serilog が Xamarin ベースのアプリに使用されようとしている場合、どのようにしてそれが実現するのかということです。
log4net は、 Logentries C# ポートの別のオプションですが、おそらく Xamarin ではなく、デスクトップ アプリケーション用です。それも調査しているだけで、明らかにiOS用のポートがいくつかあります。
Xamarin と連携して Logentries を使用するための正しいアプローチを教えていただければ幸いです。
c# - Serilog: さまざまな種類のログ イベントのログ記録
私の API は、さまざまなタイプのコンシューマーによってアクセスされます。外部アプリケーションと Web インターフェイス経由のユーザーがあります。
例を挙げて説明します。つまり、メソッド呼び出しで、誰が、または何がアクセスしたかをログに記録したいと思います。
外部アプリケーションの場合、次のようにログに記録したいと思います (テンプレートを使用):
ユーザーがトリガーしたアクションの場合、次のようなログを記録したいと思います。
両方のタイプのメソッド呼び出し元が からアクセスされますがThread.CurrentPrincipal.Identity
、それぞれが異なるカスタム プロパティを使用して、異なるタイプの ID を実装します。
私のコードは次のようになります。
ロガーを次のように構成した場合:
外部アプリケーション (スレッド ID) によってトリガーされて呼び出された場合、Key と RequestId は表示されません。
MyEnricher
私はロガーに追加しましたが、次のようなものです:
オンラインのドキュメントと例から把握できる限り、ロギング テンプレートは、実際に作成される前の、ロガーを構成する瞬間にのみ設定されます。エンリッチャーは読み取り専用 (getter のみ) であるため、LogEvent 経由でエンリッチャーにアクセスして変更できませんでした。
メッセージのフォーマットの可能性は認識していますが、これはこの特定のケースで探しているものではありません。
外部アプリへのアクセスについて、ログに表示したい最終結果は次のようなものです。
2016 年 1 月 17 日 10:11:42.524 [API] 10:11:40 [情報] (RequestId: 123 | キー: XXX-1 | AppVersion:1.2.1) DoSomething が呼び出されました
そして、ユーザーのためにログに記録されたとき:
2016 年 1 月 17 日 11:12:42.524 [WEB] 11:12:40 [情報] (FullName: Anonymous | Organization: MyOrg | AppVersion:1.2.1) DoSomething と呼ばれる
私の質問は、テンプレートにログインするために、さまざまなプロパティを持つさまざまな種類のイベントを (可能であれば) ログに記録 (およびログで確認) するにはどうすればよいですか? その場で実行時にテンプレートを操作することは可能ですか? 両方または他の多くの可能なイベント タイプからのすべての可能なトークンと、それらのプロパティが 1 か所で定義されたテンプレートを持ちたくありません (いずれかのケースでそれらの多くが空白になっています)。
c# - Serilog での構造化時に null 値を無視する
Serilog では、値が null の場合にプロパティを無視することは可能ですか?
DataMember 属性を追加しようとしましたが、これらは無視されているようです:
ソースをさらに調べると、AttributedDestructuringPolicyがあることに気付きましたが、これはプロパティを省略するのではなく、レンダリング プロパティ値を制御しているようです。
c# - ForContextの場合、SerilogにSourceContextのみを表示することは可能ですか?定義されています
私は Serilog を初めて使用し、{SourceContext:l}
各ログ メッセージに追加することなく、必要な場合にのみクラス名を表示することに苦労しています。私は次のようにコードを書くことができることを知っています:
以下のようにロガーをセットアップしています。
ここで見られるようにクラスが指定されている場合にのみ、クラス名が表示されることを望んでいます。
などのログが作成されている場合は表示されません。
ただし、上記の例では、単に「メッセージ」ではなく「{SourceContext} メッセージ」の形式でログアウトが出力されますが、これは私が望んでいるものではありません。
c# - Serilog の xml 構成のログ レベルに基づいて、異なる outputTemplates を持つ複数のシンクを定義します。
ログのレベルに基づいて outputTemplate を変更できるようにする、serilog の XML 構成で複数のシンクを定義する方法はありますか?
私は現在持っています:
ただし、次のように、デバッグ レベルのログに SourceContext 文字列を含めないようにしたいと考えています。
を設定できることは承知していますがrestrictedToMinimumLevel: LogEventLevel.Verbose
、XML でこれを行う方法がわかりません。