C#コンソールアプリケーションのための変数として格納したファイルのパス
-
21-08-2019 - |
質問
私は、ログファイルを生成しますC#コンソールアプリケーションを作成しようとしています。私は、ログファイルが格納される場所である程度の柔軟性を持っているしたいと思います。
私はとSettings.settingsファイルを使用してみました
名称:logDrive タイプ:文字列 対象範囲:アプリケーション 値:C:ログ\ \スクリプト
私のコードでは、私が使用しています:
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:のServiceDesk \ログ\スクリプト\" LOGFILE = "2009年3月23日午前1時20 PM.log"
誰がどんな考えを持っています/より良いアプローチのための勧告および/または私が間違ってやってる?
解決
あなたはファイル名に:
を含めることはできません。より良いアプローチは、
YYYYMMDD_HHMMSS.log
(例えば20090323_231245.log
)
これは、簡単にソート可能であるという利点を持っており、それは無効な文字を使用しません。
あなたが使用してこれを取得することができます。
string logFile = string.Format("{0:yyyyMMdd_HHmmss}.log", DateTime.Now);
の注:の
また、コメントで提案されているように、あなたはあなたのディレクトリとファイル名を組み合わせることPath.Combine
を使用することを検討すべきです。これは、パスの区切りなどを末尾の問題を軽減するのに役立ちます。
他のヒント
また、あなたの「logDrive」に末尾にスラッシュを追加する必要があります。すなわちます:
logDrive = "C:\Scripts\ServiceDesk\Logs\"
..または
他の回答で提案されているようPath.Combineを使用所属していません StackOverflow