2009-03-23 4 views
0

로그 파일을 생성 할 C# 콘솔 응용 프로그램을 만들려고합니다. 로그 파일을 저장할 위치에 유연성을 갖고 싶습니다. 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); 

위 컴파일시 "주어진 경로 형식이 지원되지 않습니다."라는 오류 메시지가 나타납니다.

사람을합니까 로그 파일 = "2009년 3월 23일 1시 20분 PM.log"

logDrive = "의 ServiceDesk \ 로그 \ \ 스크립트 C :"

그것은에 대한 값, 도움이된다면 더 나은 접근 방법 및/또는 내가 잘못하고있는 것에 대한 생각/권장 사항이 있습니까?

답변

13

파일 이름에 :을 포함 할 수 없습니다. 더 나은 방법이 쉽게 정렬되는 장점을 가지고

(예를 들어 20090323_231245.log)

YYYYMMDD_HHMMSS.log 

같은 형식을 사용하도록 할 수 있습니다, 그것은 유효하지 않은 문자를 사용하지 않습니다.

당신은

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

노트를 사용하여이를 얻을 수 있습니다 : 코멘트에 제안

또한, 당신이 당신의 디렉토리와 파일 이름을 결합 Path.Combine을 사용하는 것이 좋습니다. 이것은 후행 경로 구분 기호 등의 문제를 완화하는 데 도움이됩니다.

+0

일에 제안

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

.. 또는 사용 Path.Combine. 내 로그 파일의 이름을 비슷한 방식으로 지정하여 정렬 할 수 있습니다. –

+1

또한 수동으로 연결하는 대신 System.IO.Path.Combine (logDrive, logFile)을 사용해야합니다. – womp

+0

+1 여기 ... DateTime.Now.ToString ("yyyymmdd_hhMMss") – Tracker1

0

또한 'logDrive'에 후행 슬래시를 추가해야합니다. 즉 : 다른 대답

+0

을 확인해보십시오. 나는 후행을 추가했다. – Zambian