タグ

ブックマーク / qiita.com/skitoy4321 (6)

  • MetricsEventSourceを利用する - Qiita

    はじめに System.Diagnostics.Metricsの記事で軽く触れた、MetricsEventSourceなるものについて、こちらで解説を入れる。 System.Diagnostics.Metricsについての基的なことについては上記記事を参照のこと。 MetricsEventSourceとは 簡単に言うと、 Metricsで各種Instrumentが出している値を、EventSourceのイベントとして出力しているクラス である。 EventSourceについてはdocs.microsoft.comの記事を参照。 普通InstrumentはMetricsListenerで拾うのが筋だが、外部ツール等で情報を一時的に収集したいときなどに使う。 dotnet-traceでEventSourceのイベントをEventPipe経由で収集できるので、MetricsEventSourc

    MetricsEventSourceを利用する - Qiita
  • ActivitySourceについての概要 - Qiita

    はじめに 以前DiagnosticSourceについての解説記事を書いた。 この記事の中で、Activityに軽く触れているが、今回net5.0よりActivitySourceが登場し、 OpenTelemetryのC#実装もこちらを積極的に使うようにしたらしいので、使い方の記事を書く。 なお、DiagnosticSourceとは兄弟のようなものだが、基的に継承、所有関係等は無く、互いに独立したクラスであることに注意してほしい。 Activityについて Activityについては、アクティビティユーザーガイドという公式文書はあるが、日語が無いのと、DiagnosticSourceでの使い方しか書いてないので、ここでも解説する。 また、多くの概念をW3C Trace Contextから参照しているので、コメントを見てもよくわからない部分があったらそちらを参照するのがいい。 何のためのも

    ActivitySourceについての概要 - Qiita
  • 診断用情報収集にSystem.Diagnostics.DiagnosticSourceを使う - Qiita

    初めに .NET Coreで、イベント情報収集のためにSystem.Diagnostics.DiagnosticSourceというものが追加された。 一応公式文書として DiagnosticsSource User's Guideはあるが、日語リソースはあまりなく、かつガイドでも若干自分が知りたいことについてわかりにくい部分があったので記事を書こうと思う。 DiagnosticSourceにはさらにActivityというものも存在するが、記事が長くなるのでこれはまた別の機会に。 DiagnosticSourceとは 簡単に言うと、動作中のアプリから、診断用のイベント情報を収集するためのクラス。 ここでいう診断用のイベント情報とは、ロギング、トレース等、アプリケーションの状態を把握するために、アプリケーション内部から発信される情報を言う。 特徴としては、 インプロセスで動く シリアライズし

    診断用情報収集にSystem.Diagnostics.DiagnosticSourceを使う - Qiita
  • System.Threading.Channelsを使う - Qiita

    はじめに マルチスレッドでの非同期データ受け渡しライブラリのSystem.Threading.Channels(corefxlabにあったころはSystem.Threading.Tasks.Channels)が、corefxに統合され、この度4.5.0-rc1としてリリースされたので、 さすがに大きな変更はないだろうと踏んで使い方などを書く。 参考: corefxlabにあったころの記事 何ができるようになるか 非同期でのプロデューサー・コンシューマーパターンを作るのがより容易になる。 特徴としては以下のようになる 順序は必ずFIFO(先入れ先出し) 読み:書き=M:1、1:N、M:Nのパターンに対応 asyncと親和的な設計 パフォーマンスに配慮 netcoreapp2.1では更に特化実装で速い 注意: 現在netcoreapp2.1で、ConcurrentQueueが特定のケースでne

    System.Threading.Channelsを使う - Qiita
  • 非同期外部プロセス起動で標準出力を受け取る際の注意点 - Qiita

    はじめに C#というか.NETの世界では、外部プロセスを起動する際にSystem.Diagnostics.Processを使用するということになっている。 このProcessクラスには非同期イベントベースで標準出力をやり取りするためのAPIが存在するが、意図しない動作になる場合があるので要注意という話。 Processの非同期APIについて 非同期で標準出力、エラー出力を受け取り、かつ非同期でプロセス終了を待ちたい場合、以下のようにする。 ProcessStartInfoを以下のように設定する UseShellExecute=false RedirectStandardOutput=true RedirectStandardError=true Processをnewする(Startはしない) Processを以下のように設定する OutputDataReceivedにコールバック登録 E

    非同期外部プロセス起動で標準出力を受け取る際の注意点 - Qiita
  • HttpClientをマルチスレッドで運用する場合の注意点 - Qiita

    始めに HttpClientをマルチスレッドかつ高負荷で回す時、少々ハマった点があったので、注意するべき点について書く。 シングルスレッドの場合 https://aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/ にもある通り、できる限り一つのHttpClientインスタンスで使いまわすという方法で問題はない。 実際自分もこういう風に使っていた。 マルチスレッドの場合 しかし、マルチスレッドでこれを行うと少々厄介なことになる。 実際に以下のようなメソッドを適当なWindowsマシン上で実行してみよう。(要dotnet-sdk-2.0以上) using System; using System.Net; using System.Linq; using System.Net.Http; using System.Threading.T

    HttpClientをマルチスレッドで運用する場合の注意点 - Qiita
  • 1