2016-03-22 11 views
-1

こんにちは、 私は問題に直面しています。 NLogを試してみてください。設定コードは以下の通りですNLogがディスクにログファイルを書き込めません

var config = new LoggingConfiguration(); 

var fileTarget = new FileTarget(); 
config.AddTarget("file", fileTarget); 

fileTarget.FileName = @"D:\" + filename; 
fileTarget.Layout = @"${date:format=HH\:mm\:ss} ${logger} ${message}"; 

var rule1 = new LoggingRule("*", LogLevel.Debug, fileTarget); 
config.LoggingRules.Add(rule1); 

LogManager.Configuration = config; 

Logger logger = LogManager.GetLogger("Example"); 
logger.Debug("debug log message"); 

コードはいくつかのチュートリアルから取られました。そして、何も起こらなかった。ログファイルはディスクD上に作成されませんでしたが、プロジェクトの出力ディレクトリに作成されました。私は@"C:\" + filenameを試しました。私は驚いたが、ログファイルはそこにあった。

私は@"D:\SomeFolder\" + filenameにログを記録しようとしましたが、そこにもファイルがありました。

だから誰でも私が何が間違っているのか理解するのを助けることができる@"D:\" + filename

P.S.管理者権限で実行されるVisual Studio 2013。また、私は${basedir}を試しました。すべてOkだった。

+0

検索を試しましたか? 99.999%のケースではこれは権限の問題ですが、コンテキスト(これはデスクトップアプリケーションまたはWebアプリケーション)やアクセス権については何も言及していません。一般に、ディスクのルートディレクトリは、そのアクセス権によってかなり制限されています。 「nlog/NLog Wiki・GitHub」(https://github.com/NLog/NLog/wiki/Logging-troubleshooting)も参照してください。 – CodeCaster

+0

@CodeCaster、こんにちは。私は検索しようとします。また、私はアクセス許可をチェックしました。たぶん、私は何かを逃した。もう一度チェックします。これはデスクトップアプリケーションです。ディスクCはシステムディスクなので、Dは借用されていませんでした。 – Max

答えて

1

NLogの内部ログを有効にします。あなたが持っているものをチェックしてください。また、internal logをファイルに書き込むのではなく、コンソールに書き込みます。

// enable internal logging to the console 
    InternalLogger.LogToConsole = true; 

内部ログのエラーを探します。あなたはそれがなぜ機能していないのかというアイデアを得るでしょう。

+0

お返事ありがとうございます。あなたの答えは役に立ちました、ありがとう。私は例外を見つけることはできませんでしたが、NLogは "記号"を "食べる"ことに気付きました。一部のログは 'D:\ file.txt'のように見え、別のログは 'D:file.txt'です。私は 'D:\\ file.txt'に変更され、すべて動作しました。 – Max

+1

このバグはNLog 4.3(rc3)https://github.com/NLog/NLog/issues/1350で修正される予定です – Julian

関連する問題