4

MVCプロジェクトでNlogを使用しています

私が達成したいのは、コントローラーでアクションメソッドが実行されたときにメッセージをログに記録することです。ログメッセージはtxtファイルに表示されます。しかし、私はそれを機能させることができないようです

参照にNlogをインストールしました。

次の構成のNlog.Configがあります。

<?xml version="1.0" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <targets>
        <target name="file"
                xsi:type="File"
                layout="${longdate} ${logger} ${message}"
                fileName="${basedir}/logs/logfile.txt"
                keepFileOpen="false"
                encoding="iso-8859-2" />
    </targets>
    <rules>
        <logger name="*"
                minlevel="Debug"
                writeTo="file" />
    </rules>
</nlog>

次に、コントローラーのPOSTアクションメソッド内に次のコードがあります。

[HttpPost]
public ActionResult Edit(int id, CreateNKIphase1ViewModel model)
{
    Logger logger = LogManager.GetCurrentClassLogger();
    logger.Info("Test message");

     //code....
}

txtファイルはどこにありますか?

なぜこれが機能しないのですか:S

4

4 に答える 4

6

アプリケーションがアプリケーションプールIDを使用してIISで実行されている場合は、そのIDにフォルダーのアクセス許可を付与する必要があります。

  • 'logs'フォルダーを作成します。
  • IISマネージャーで、アプリケーションが使用しているアプリプールIDを見つけます。
  • 「ログ」フォルダのプロパティダイアログで、アプリプールIDに書き込み権限を付与します。

アプリプールIDの名前を入力するときは、を含める必要がありますIIS APPPOOL。たとえば、アプリプールIDがASP.NET v4.0、の場合、名前を。として入力しIIS APPPOOL\ASP.NET v4.0ます。また、場所がネットワークドメインではなく、ローカルマシンであることを確認してください。

于 2012-05-15T12:17:20.303 に答える
2

フォーマットfileNameを使用するのではなく、既知のパスと名前に属性を設定してみませんか?${basedir}

fileName="C:\Temp\logfile.txt"

そうすれば、ファイルがどこにあるかがわかります。ログダウンのその部分を取得したら、より高度な手法を追加し始めることができます。

于 2012-05-15T12:01:43.597 に答える
0

完全に機能していますが、asp.netアプリケーションの$ {basedir}は、通常のデスクトップアプリケーションの場合と同じではありません。このファイルは、アプリケーションアセンブリからそれほど遠くない、一時フォルダから入手できると思います。

独自の変数を定義することも、「logs」フォルダーへの直接アクセスを定義することもできます。アプリケーションがこのフォルダにログを書き込めることを確認してください。この答えを使用してください、それはあなたが何をすべきかを完全に説明しています

于 2012-05-15T14:12:57.203 に答える
0

アプリケーションをデバッグモードで実行する場合は、次のパスで見つけることができます。

"%PARTITION%:\\...PATH TO YOUR APP...\bin\Debug\\...
于 2015-02-12T10:56:49.197 に答える