3

ASP.NET MVC4 プロジェクトから構成ファイル (NLog.config) を呼び出すときに、クラス ライブラリ プロジェクトから構成ファイル (NLog.config) を読み取るときに問題が発生します。

単体テスト プロジェクトを使用してコードをテストし、構成ファイルを適切に読み取り、NLog.config で指定したファイルに正しくログを記録したため、NLog.config が正しく定義されました。

また、チュートリアルにあるように、[出力ディレクトリへのコピー] 設定で [常にコピー] を設定します。

問題は、ASP プロジェクトからクラス ライブラリ プロジェクトを呼び出したときに、ログが作成されていないことに気付き、デバッグすると、NLog.config から構成が選択されていないことがわかりました。そのため、私のプロジェクトは、いつ、どこでログを記録するかを知りませんでした。

「ASP プロジェクト フォルダ」/bin を調べたところ、NLog には NLog.dll、NLog.config、NLog.xml というファイルがあり、理論的には ASP プロジェクトは NLog ファイルに問題なくアクセスできます。

NLog のチュートリアルを読みましたが、解決策がわかりません。なぜ私のテスト プロジェクトが正しく動作するのか理解できませんが、ASP プロジェクトから同じ呼び出しを行うと動作しません。

これは、NLog の構成ファイルです。

<?xml version="1.0" encoding="utf-8" ?>
<nlog throwExceptions="true" 
  xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<targets>
  <target name="logfile" xsi:type="File" fileName="C:\logfile.txt" layout="${callsite:fileName=true} - ${longdate} - ${level:uppercase=true} - ${logger} - ${message}"/>
</targets>

<rules>
  <logger name="*" minlevel="Info" writeTo="logfile" />
</rules>
</nlog>

そして、クラス内で、次の方法でロガーを作成します。

private static Logger logger = LogManager.GetCurrentClassLogger();

誰でもこの問題を解決できますか?

4

2 に答える 2

1

私は解決策を考え出しました。

出力ディレクトリへのコピーの設定のようですが、asp.net-mvc4 では十分ではありません。

出力ディレクトリにコピー

NLog.config をソリューション エクスプローラー内の asp プロジェクト自体に手動でコピーする必要がありました。

プロジェクト エクスプローラー http://imageshack.us/a/img849/2460/sol1o.png

この例では、NLog.config を LoggingLibrary から LogWebApp プロジェクトにコピーしましたが、うまく機能します。

ご挨拶!

于 2012-11-21T14:43:09.997 に答える
0

nlog自体の内部ロギングをオンにして、何がわかるかを確認してください。

<nlog internalLogFile="c:\log.txt" internalLogLevel="Trace">

あなたはそれが権利の問題だと思うかもしれません。

于 2012-11-20T08:58:40.387 に答える