2016-10-10 11 views
0

コンソールアプリケーションで例外を記録しようとしています。私はいつものようにすべてを行っている(と、それは私のために働いていた...):Nlogログファイルが作成されていません

NLog.config:

<?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" 
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd" 
autoReload="true" 
throwExceptions="false" 
internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log"> 
    <targets> 
    <target name="LogFile" xsi:type="File" 
       fileName="${basedir}/Log/${date:format=yyyyMMdd} myLog.txt" 
       layout="${longdate}|${level:uppercase=true}|${message}|${exception}" /> 
    </targets> 

    <rules> 
    <logger name="*" minlevel="Debug" writeTo="LogFile" /> 
    </rules> 
</nlog> 
class Program 
{ 
    private static Logger _log = LogManager.GetCurrentClassLogger(); 

    static void Main(string[] args) 
    { 
     _log.Error("test"); 
    } 
} 

をいくつかの神秘的な理由でファイルの場合は自分のコンピュータ上でどこに作成されることはありません。任意のアイデア理由

答えて

1

あなたの設定は有効と思われるので、問題ではありません。

チェックするためにいくつかの点:

  1. は、あなたが正しいディレクトリにnlog.configですか?テストする最良の方法は、nlog.configを.dllまたは.exeのディレクトリにコピーすることです。 throwExceptions="true"

  2. internalLogLevel="Info"を設定することにより、内部ログをチェックして、 "C:\一時\ nlog-internal.logは、" チェック:

  • エラーがNlogによって捕獲されていないことを確認するために、例外を有効にします

    トラブルシューティングの詳細はNLog documentationにあります。

  • 0

    NLogの設定を編集し、このようなログファイルのパスを変更する場合は、{date:format=yyyyMMdd}の代わりに${shortdate}を使用してください。規則の中で名前を設定し、このサンプルのように呼んでください。

    <?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 async="true"> 
        <targets> 
         <target name="LogFile" xsi:type="File" 
           fileName="${basedir}/Log/${shortdate}myLog.txt" 
           layout="${longdate}|${level:uppercase=true}|${message}|${exception}" /> 
        </targets> 
    
        <rules> 
         <logger name="ErrorLog" minlevel="Trace" writeTo="LogFile" /> 
        </rules> 
    </nlog> 
    

    そして、あなたは.cs

    class Program 
    { 
    
        private Logger ErrorLogger = NLog.LogManager.GetLogger("ErrorLog"); 
    
        static void Main(string[] args) 
        { 
         ErrorLogger.Error("test"); 
        } 
    } 
    
    +0

    あなたが名前付きロガーのログにクラスベースのログからの切り替えを示唆している - 私見ここでの問題ではありません...また、そこにありますあなたの命名で不一致: 'ErrorFile'対' ErrorLog'。 –

    +0

    それは非常にうまく動作しているサンプルです。私はすべてのログを記録するために、fileNameのパスを変更し、日付形式の一部を変更し、レベルをTRACEに変更することをお勧めします。 –

    関連する問題