0

ログ ファイルを生成する C# コンソール アプリケーションを作成しようとしています。ログ ファイルの保存場所にある程度の柔軟性を持たせたいと考えています。

私は Settings.settings ファイルを次のように使用してみました:

名前: logDrive タイプ: 文字列 スコープ: アプリケーション 値: C:\Scripts\Logs

私のコードでは、次のものを使用しています。

string logFile = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString();
logFile = logFile.Replace(@"/", @"-").Replace(@"\", @"-") + ".log";
string logDrive = Properties.Settings.Default.logDrive;
StreamWriter output = new StreamWriter(logDrive + logFile);

上記をコンパイルすると、「指定されたパスの形式はサポートされていません」というエラー メッセージが表示されます。

それが役立つ場合、次の値:

logDrive = "C:\Scripts\ServiceDesk\Logs" logFile = "3-23-2009 1:20 PM.log"

より良いアプローチおよび/または私が間違っていることについて、誰かが考え/推奨事項を持っていますか?

4

2 に答える 2

13

:ファイル名にa を含めることはできません。より良いアプローチは、次のような形式を使用することです

YYYYMMDD_HHMMSS.log

(例20090323_231245.log)

これには、簡単にソートできるという利点があり、無効な文字は使用されません。

これを使用して取得できます

string logFile = string.Format("{0:yyyyMMdd_HHmmss}.log", DateTime.Now);

ノート:

また、コメントで提案されているように、Path.Combineディレクトリとファイル名を組み合わせるために使用することを検討する必要があります。これは、末尾のパス区切りなどの問題を軽減するのに役立ちます。

于 2009-03-23T17:24:28.757 に答える
0

また、「logDrive」の末尾にスラッシュを追加する必要があります。すなわち:

logDrive = "C:\Scripts\ServiceDesk\Logs\"

..または、他の回答で提案されているように Path.Combine を使用します

于 2009-03-23T17:31:18.567 に答える