まったく見逃していない限り、 NLog documentation は例で${basedir}
を使用しているという印象を受けますが、その場所を説明していません。
可能なすべてのオプションを意味のある説明とともにリストする情報はどこで入手できますか?
私はこの構成を定義しています:
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" throwExceptions="true">
<targets>
<target name="file" xsi:type="File"
layout="${longdate} ${logger} ${message}"
fileName="${basedir}/logs/${shortdate}.txt"
keepFileOpen="false"
encoding="iso-8859-2" />
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="file" />
</rules>
</nlog>
私の知る限り機能しますが、どこにログを記録するのか手がかりがありません。
${basedir}
—アプリケーションが実行されるディレクトリ。
このマニュアルページ が役立つと思います。
失敗の別の可能性は、NLog.configを使用している場合、NLogが構成ファイルを見つけることができないことです。ビルドでファイルを「常にコピー」に設定すると、最終的にbinディレクトリに格納されるため、NLogは実行時にそれを見つけることができます。
NLog構成情報をApp.configにコピーする場合、この問題は発生しません。
すでに提供されている回答とコメントに基づいて、.NETアプリケーションの回答を要約できます。
AppDomain.CurrentDomain.BaseDirectory
コンソールまたはWindowsフォームアプリケーションの場合、このディレクトリはbin/debug
Visual Studio内で。アプリケーションがデプロイされている場合、パスはほとんどの場合実行可能パスになります。
Webアプリケーション(ASP.NET)の場合、これはWebアプリケーションのルートディレクトリになります。
ファイルが表示されないことは、次のようないくつかの原因によって引き起こされる可能性があります。NLog構成エラー、およびターゲットファイルを書き込めない。これらのエラーを公開するには、NLog.config(またはweb.configまたはapp.configに組み込まれたNlog構成)がそのようなエラーを出力する内部ログファイルを指定していることを確認してください。
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
internalLogFile="C:\NLogError\NLog.log">
<!-- targets and rules come here -->
</nlog>
プラットフォームにも依存します。通常の.Netプロジェクトの場合、実際にはbinまたはbin/debugなどです(ビルド設定に応じて)
Coreclr/aspnet5の場合、dnxランタイムのbinフォルダーです。それはまだ進行中の作業です。