localhost の MVC3 アプリケーションでテストを実行しているときに、NLog アプリケーションが電子メールを送信しないようにする方法を知っている人はいますか? アプリケーションが Web サーバーにデプロイされたときにエラーが発生した場合にのみ、NLog が電子メールを送信するようにしたいと考えています。それを達成するために私は何を書かなければならないでしょうか?
ありがとう
localhost の MVC3 アプリケーションでテストを実行しているときに、NLog アプリケーションが電子メールを送信しないようにする方法を知っている人はいますか? アプリケーションが Web サーバーにデプロイされたときにエラーが発生した場合にのみ、NLog が電子メールを送信するようにしたいと考えています。それを達成するために私は何を書かなければならないでしょうか?
ありがとう
メール設定を変更して、メール送信を「無効化」してみてください。
<system.net>
<mailSettings>
<smtp deliveryMethod="SpecifiedPickupDirectory">
<specifiedPickupDirectory pickupDirectoryLocation="c:\whateverfolder"/>
</smtp>
</mailSettings>
</system.net>
これにより、コンピューターのフォルダーに電子メールがドロップされます。これは実際にはメールを停止しませんが、送信を停止します。
また、手動または自動テストを実行している場合、電子メールが「送信」されていることを確認するのが非常に簡単になります。
これにはフィルターを使用できます。サーバー名が localhost の場合、 when-filterを使用してメール ターゲットのメッセージをフィルター処理できます。これは、localhost でサイトをリクエストしていることを前提としています。ただし、条件には任意のレイアウト レンダラーを使用できます。
以下の構成例を参照してください。これは私にとってはうまくいきます。
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target xsi:type="Mail" name="m" layout="${message}" subject="Log"
to="mail@domain.com" from="app@domain.com" body="${message}"
smtpServer="localhost">
</target>
</targets>
<rules>
<logger name="*" minlevel="Fatal" writeTo="m" >
<filters>
<when condition="equals('${aspnet-request:serverVariable=SERVER_NAME}','localhost')" action="Ignore" />
</filters>
</logger>
</rules>
</nlog>