7

次のリスナーは、Trace.WriteLineが呼び出されたときにイベントエントリを作成します。ソースが存在しない場合、彼はデフォルトのログチャネルである「アプリケーション」にソースを作成します。別のデフォルトのログチャネルを指定したいのですが、45分間検索した後、解決策が見つからないようです。何か案は?

<configuration>   
  <system.diagnostics>
    <trace autoflush="false" indentsize="4">
      <listeners>
        <add name="myListener"               
          type="System.Diagnostics.EventLogTraceListener"
          initializeData="Source">          
        </add>
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>
4

4 に答える 4

3

設定を介してできるかどうかわからない。

ただし、EventLogTraceListenerは、コンストラクターのパラメーターとして別のイベントログを受け入れます。残念ながら、クラスは封印されているため、単純にクラスから派生してコンストラクターに別の値を渡すことはできません。

このアプローチに従って、独自のクラスを作成することもできますが(かなり単純なようです)。次に、構成でそのタイプを参照します。 http://weblogs.asp.net/psteele/archive/2006/02/23/438936.aspx

于 2009-07-15T20:50:02.680 に答える
0

コードの最初の行でリスナーを再指定できます。

Trace.Listeners["MyListener"].Attributes["EventLog"] = ConfigurationManager.AppSettings["MyCustomEventLogName"];

値は<appSettings>構成ファイルのセクションに保存できるため、構成ベースのままです。

<appSettings>
    <add key="MyCustomEventLogName" value="CustomEventLogName" />
</appSettings>
于 2017-08-03T10:00:53.577 に答える
0

自分でこの問題を抱えていて、カスタムコードを必要としない解決策を見つけました。Powershellを使用して事前に「ソース」を作成すると、使用するログを設定できます。

  1. Powershellを介してソースを初期化します。
# Run as administrator

# ONLY If you previously ran the application and the source is already associated with the Application channel:
Remove-EventLog -Source MyCustomSource

# Create new log channel <-> source mapping
New-EventLog -LogName CustomLog -Source MyCustomSource
  1. 以前に「アプリケーション」にログインしたのと同じ「ソース」を使用している場合は、マシンを再起動します。変更は再起動するまで適用されません。

  2. 診断XMLの「ソース」を新しく作成されたソースと一致させます

<configuration>   
  <system.diagnostics>
    <trace autoflush="false" indentsize="4">
      <listeners>
        <add name="myListener"               
          type="System.Diagnostics.EventLogTraceListener"
          initializeData="MyCustomSource">          
        </add>
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>
于 2021-05-25T15:46:19.137 に答える
-1

このブログ投稿でこれに対する解決策を見つけることができます:

http://weblogs.asp.net/psteele/438936

それは実際に動作します!

于 2015-03-16T16:41:57.653 に答える