1

私は数か月間NLogを使用しており、イベントログにログを記録するだけですが、どのシナリオでも理想的ではありません.

NLog を使用して独自のプログラムまたはサービス ログを作成することは可能ですか? http://nlog-project.org/wiki/Targetsでサポートされているターゲットのリストによると、そうではないようです

誰かがこれに光を当てることができますか?

4

1 に答える 1

2

他のアプリケーションのすべてのログを保存して表示するアプリケーションを完全に作成できますが、NLog を拡張する必要がある場合があります。これは、私が職場で行ったことです。例えば ​​:

  1. 必要に応じて、NLog およびその他の種類のログからのすべてのログを格納できる汎用データベースを作成します。

  2. ログ情報を使用して XML を作成するカスタム レイアウト レンダラーを作成します (システムを作成した時点では、 XmlEncode LayoutRendererは試していません。今は素晴らしいと思います)。

  3. ネットワーク経由で XML を送信する方法を見つけてください。Transactionnal MSMQを使用しましたが、非トランザクション ターゲットのみが NLog に存在するため、独自のターゲットを作成しました (= 元のファイルをコピーして貼り付けます)。

  4. ログの XML を受信して​​データベースに挿入するサービスを作成する

  5. 最後に、データベースを使用して環境で何が起こったかを表示するアプリを作成します

あなたがそれをする時間があれば、それは強力な解決策です. 私たちの本番環境では、何度も節約できます。しかし、それはあなたが正確に必要なものに依存します

* 編集 2013-01-25 : *

アプリケーションとサービスのログツリーで独自のログを作成する場合: 独自のログの作成方法とそれに伴うイベント ソースを説明しているこの投稿を参照してください。

Nlog が存在しない場合は、イベント ソースを作成することもできますが、この投稿でわかるように、アプリケーションにはキーの読み取りアクセス許可が必要です。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Security

または、アプリケーションを管理者として実行することもできます。

独自のログとそのイベント ソースを作成したら、次のような構成で Nlog を通常どおり使用できるようになります。

<targets>
  <target xsi:type="EventLog" name="event" layout="${message}"
          machineName="." log="myLog" source="myEventSource"/>
</targets>
<rules>
  <logger name="myLogger" writeTo="event"/>
</rules>

それが役に立てば幸い

于 2013-01-24T10:12:15.063 に答える