問題タブ [semantic-logging]
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.
azure - インプロセスおよびアウトプロセスのセマンティック ロギング
Windows Azure Web サイトでセマンティック ログを使用していますが、
Azure Web サイトを使用してセマンティック ログを使用し、Azure テーブル ストレージにログを保存し、Azure SQL db は Inproc または out Proc であるのだろうか?
誰でもこれについて詳しく説明できますか?
etw - EventSource GUID のランタイム構成
アプリケーションの複数のプレリリース バージョンが同じ環境で実行されるシナリオがあります。私たちが見ている問題EventSource
は、同じ名前/GUID を持っているため、ログを区別できないことです。
構成を介して、または実行時に EventSource の名前/GUID を構成することは可能ですか?
現在、単一ビルドのデプロイ パイプラインがあるため、ビルド時のソリューションがうまくいくとは思いません。
azure - Azure Table Sink でセマンティック ログを表示するのに最適なツールは何ですか?
セマンティック ログと Azure シンクを使用するようにアプリケーションをセットアップしました。表に表示されているものは見栄えがよく、見ているものにかなり満足しています.
私の問題は、これらのログをフィルタリングして検索したいということです。
たとえば、現在、json メッセージを解析し、それに応じて動作するメソッドをログに記録しています。重要な情報をログに記録できる解析には、いくつかの重要な側面があります。これらのエントリはすべてメッセージ ID を共有します。このIDで簡単にソートできるようにしたいです。私は同じことをするが異なるレベルの他の分野を持っています。
セマンティック ログに対してこの種のフィルター処理を実行できる、Azure Storage で使用できるツールはありますか? (これまでに見つけた最高のものはLINQPadです)
c# - EventSource/Enterprise Library Logging は、削除されたメソッドをキャッシュします (おそらく、instrumentationManifest で!)
短縮版
これを変えると・・・
これに...
... まだログ メッセージを受け取りますが、メッセージが壊れています。
メッセージが届かないか、現在のプロジェクトにも存在しない欠落/削除/削除されたメソッドによってフォーマットされています!
不明な理由により、特定の文字列「HardymanDatabaseLog」に問題があります
どこかにマニフェストしている破損したインストルメンテーション マニフェストが原因である可能性があると思います。
詳細を確認するために読んでください...!( ありがとう :o) )
ロングバージョン(写真あり)
EnterpriseLibrary.SemanticLogging
nuget パッケージを介して参照する単純なコンソール アプリケーションがあります。
hereのサンプル コードを使用して、BasicLogger
クラスを追加しました。
シンプルなアプリを実行すると...
... ログ ビューアー コンソールに次の応答が表示されます ( SemanticLogging-svc.exe
)
... どちらが正しい!
しかしEventSource
、属性をに更新し、参照も[EventSource(Name = "HardymanDatabaseLog")]
調整すると...SemanticLogging-svc.xml
HardymanDatabaseLog
...その後、ログ ビューアー コンソールに次の応答が表示されます ...
...最初のメッセージが失われただけでなく、2 番目のメッセージが破損しました!
開始する行をよく見ると、次のように表示されているEventId : 1
ことがわかりますMessage : Application Started
...どのように、なぜ、そしてどこからそのメッセージが来ているのですか?! ...Level : Informational
少しでも間違っています...私のコードにはLevel = Critical
!
BasicLogger
この問題が発生する前に、属性 を持つクラスに (長い間削除されていた) メソッドを作成しましたが[Event(1, Message = "Application Started.", Level = EventLevel.Informational)]
、現在、 を設定するたびにEventSource(Name="HardymanDatabaseLog")
、このファントム メソッドが呼び出されています。
明確にするために... 「Application Started」というテキストがアプリケーションのどこにも存在しません(完全に新しいプロジェクトを使用しています)...このエラーの唯一の原因は、「HardymanDatabaseLog」EventSource名の再利用です。
これまでのところ、破損した情報が問題を引き起こしているものをすべてクリアするために行ったことは次のとおりです。
- コンピューターを再起動しました (標準!)
- Enterprise Library へのすべての参照を削除して再度追加します (問題はさまざまなソリューション間で持続するため、アプリケーション/ソリューション レベルの設定ではありません)。
- perfmon を停止して削除する > データ コレクター セット > イベント トレース セッション > Microsoft-SemanticLogging-Etw-ConsoleEventSink
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog
アプリが登録されているかどうかを調べます (確かに、レジストリのどこにも 'HardymanDatabaseLog` が見つかりませんでした)- その上で寝る
- System.Diagnostics.EventLog.DeleteEventSource("HardymanDatabaseLog")
- クリーン/リビルド/クリーン/ビルド/クリーン/etc/etc ソリューション
- Visual Studio ホスト アプリケーションなしでアプリケーションを実行する
そして、これは私が試したものですが、成功しませんでした...
- Enterprise Library が構成データを永続化するかどうかを決定する
- .NET EventSource が構成データを永続化するかどうかを判断する
- Enterprise Library を再インストールします (ダウンロード
install-packages.ps1
にのみ含まれています) 。 - キーボードで頭を叩く
すべてのヘルプ/提案に感謝します。
アップデート
JustDecompile を使用して、EventSource
コード内に a というオブジェクトを使用するメソッドを見つけましたManifestBuilder
。そのメソッド<instrumentationManifest />
は、ファントム メソッドに潜んでいると思われるすべての情報を確実に含むことができるドキュメントを作成するようです。
おそらく誰かが、.NET と Enterprise Library のコンテキストで、これらの魔法のドキュメントがどこに保存されているかを解明できるでしょうか?
更新 2
@Randy Levy が SLAB ソースを調査して発見したように、この問題は のファイルを削除することで解決できます C:\Users\<UserName>\AppData\Local\Temp\7D2611AE-6432-4639-8B91-3E46EB56CADF
。彼の答えは、この質問にも関連しています... SLAB、プロセス外: イベント ソース メソッドのシグネチャを変更すると、イベント ログが正しくありません。
ありがとう@ランディ・レヴィ!
etw - EventEntry のスキーマは、アウトプロセス セマンティック ログを使用して更新されませんでした
カスタム EventSource クラスを作成し、次のようにログのメソッドを追加します。
また、SemanticLogging-svc.exe -c を使用してトレース イベント サービスを開始し、このコマンドを実行する前に、SemanticLogging-svc.xml を次のように構成しました。
そして、Test() メソッドの呼び出しを開始します。初めて、flatFileSink は正しいレベルのイベントを警告として記録します。ただし、属性の Test() メソッドのレベルを Critical に変更して Test() メソッドを呼び出した後でも、flatFileSink はレベルを警告として記録します。それは完全に間違っていました!OnNext メソッドのパラメーターである EventEntry のスキーマであることはわかっています。しかし、インプロセス リスナーを使用すると、レベルが Critical に更新される可能性がありますが、これは正しいことです。
では、アウトプロセスを使用している場合、レベルがまだ古いのはなぜですか? それはETWに何か問題がありますか?マシンにキャッシュがあるようです。また、このキャッシュは、パフォーマンス モニターでイベント トレース セッションを停止して削除したり、コンピューターを再起動したりしてもクリアできませんでした。このキャッシュを本当にクリアしたいのですが、その方法がわかりませんでした。
また、Event Attribute の Version を変更したり、EventSource Name を別の名前に変更したりすると、プロセス外のレベルが更新されることがわかっています。しかし、バージョンを変更するのを忘れている可能性があるため、これは良い方法ではないと思います。
それで、誰かが私を助けることができますか?
azure - セマンティック ログによって作成された古い Azure テーブル ストレージ ログ エントリの削除
Azure テーブル ストレージにエントリを記録するセマンティック ロギングを実装しました。ここで、Azure テーブルから古いログ エントリ (たとえば 30 日以上前) を削除したいと考えています。問題は、azure テーブルの partitionKeys と RowKeys が動的に生成されることです。このようなもの
調査したところ、PartitionKey の形式は次のとおりであることがわかりました。DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks
削除のためにテーブルからデータを取得するにはどうすればよいですか? partitionKey は動的であるため、完全なテーブル スキャンを実行する必要がありますか?