2016-04-04 2 views

答えて

1

私はカスタムMSMQTraceListenerの下に追加しました:

public class MSMQTraceListener : TraceListener 
{ 
    string _queueName; 

    public MSMQTraceListener(string queueName) 
     : base("MSMQListener") 
    { 
     _queueName = queueName; 
     if (!MessageQueue.Exists(_queueName)) 
      MessageQueue.Create(_queueName); 
    } 


    public override void Write(string message) 
    { 
     SendMessageToQueue(message); 
    } 

    public override void WriteLine(string message) 
    { 
     SendMessageToQueue(message); 
    } 

    /// <summary> 
    /// Send message to queue. 
    /// </summary> 
    /// <param name="message">string: message</param> 
    private void SendMessageToQueue(string message) 
    { 
     try 
     { 
      MessageQueue messageQueue = new MessageQueue(_queueName, QueueAccessMode.Send); 
      messageQueue.Label = DateTime.Now.ToString(); 
      messageQueue.Send(message); 
      messageQueue.Close(); 
     } 
     catch (Exception ex) 
     { 

     } 
    } 
} 

そして、私のweb.configファイルで診断設定の下に更新:

<system.diagnostics> 
    <sources> 
     <source name="System.ServiceModel.MessageLogging"> 
     <listeners> 
      <add name="messages" type="Proj.Common.Diagnostics.MSMQTraceListener,Proj.Common" initializeData=".\private$\PerformanceTesting" /> 
     </listeners> 
     </source> 
    </sources> 
</system.diagnostics> 
1

あなたはMSMQによってホストされているコードであり、すべての.NETアプリケーションは限りたSystem.Diagnosticsが懸念しているものと同じであるログファイル を言うためにメッセージを書きたい場合。 app.configでリスナーを構成し、TraceまたはTraceSourceを使用してリスナーに書き込みます。 MSDN explains this better than I can

苦痛が少ないたSystem.Diagnosticsでの作業は BaseTraceListenerに1 TraceEvent()メソッドをオーバーライドします

なり

あなたはMSMSQにメッセージを送信するトレースリスナー このユーティリティライブラリを取得したい場合は、Essential Diagnostics、。その方法の中で、使用可能なパラメータを使用して、メッセージを送信します。たとえば、MSMQの宛先などです。

通常の方法でカスタムTraceListenerを登録します。

+0

おかげ@MatthewMartin、あなたが言及している点は非常に有用です。 私の要求を満たすために、私は自分の答えで与えられたカスタムリスナーを書いた。 –

関連する問題