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();
誰でもこの問題を解決できますか?