문제

로그 파일을 생성하는 C# 콘솔 응용 프로그램을 만들려고합니다. 로그 파일이 저장 될 위치에 약간의 유연성을 원합니다.

settings.settings 파일을 사용해 보았습니다.

이름 : 로그 드라이브 유형 : 문자열 범위 : 응용 값 : 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"

누구든지 더 나은 접근 방식 및/ 또는 내가 잘못하고있는 생각/ 권장 사항이 있습니까?

도움이 되었습니까?

해결책

당신은 포함 할 수 없습니다 : 파일 이름에서. 더 나은 접근 방식은 다음과 같은 형식을 사용하는 것입니다.

YYYYMMDD_HHMMSS.log

(예 : 20090323_231245.log)

이것은 쉽게 정렬 할 수있는 이점이 있으며 유효하지 않은 문자를 사용하지 않습니다.

당신은 이것을 사용하여 얻을 수 있습니다

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

메모:

또한 의견에서 제안한대로 사용을 고려해야합니다. Path.Combine 디렉토리와 파일 이름을 결합합니다. 이것은 후행 경로 분리기 등의 문제를 완화하는 데 도움이됩니다.

다른 팁

또한 '로그 드라이브'에 후행 슬래시를 추가해야합니다. 즉:

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

.. 또는 다른 답변에서 제안한대로 Path.comBine을 사용하십시오

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top