프로그램 개발/C#

[wpf] c# 오류 로그 텍스트 파일 만들기

(ㅇㅅㅎ) 2021. 5. 31. 21:59
728x90
반응형

 프로그램을 만들다 보면 예기치 못한 오류들로 문제가 생길 수 있습니다. 개발 단계에서 이러한 오류들을 발견하면 디버깅을 통해서 수정이 가능하지만 베포 단계에서 오류가 발생한다면 이유도 모른 채 프로그램이 종료되거나 의도하지 않게 프로그램이 동작할 수 있습니다. 이러한 것들을 방지하기 위하여 오류가 발생하면 기록하는 로그 파일을 만들어보도록 하겠습니다.

텍스트 파일 형식으로 만들었습니다.

c#
public static void Log(string str){
    // 현재 위치 경로
    string currentDirectoryPath = Environment.CurrentDirectory.ToString();
    // Logs 디렉토리 경로(현재 경로에 Logs라는 디렉토리 경로 합치기)
    string DirPath = System.IO.Path.Combine(currentDirectoryPath, "Logs");
    // Logs\Log_yyyyMMdd.log 형식의 로그 파일 경로
    string FilePath = DirPath + @"\Log_" + DateTime.Today.ToString("yyyyMMdd") + ".log";
    // Logs 디렉토리 정보
    DirectoryInfo di = new DirectoryInfo(DirPath);
    // 로그 파일 경로 정보
    FileInfo fi = new FileInfo(FilePath);
    try{
        // Logs 디렉토리가 없을 경우 생성
        if (!di.Exists) Directory.CreateDirectory(DirPath);
        // 오류 메세지 생성
        string error_string = string.Format("{0}: \t{1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), str);

        // Log 파일이 존재할 경우와 존재하지 않을 경우로 나누어서 진행
        if (!fi.Exists){
            using (StreamWriter sw = new StreamWriter(FilePath)){
                sw.WriteLine(error_string);
                sw.Close();
            }
        }else{
            using (StreamWriter sw = File.AppendText(FilePath)){
                sw.WriteLine(error_string);
                sw.Close();
            }
        }
    }
    catch {
        // 사실 try 부분에서 오류가 나면 답이 없습니다.
        // 좋은 의견 있으시면 댓글로 남겨주시길 바랍니다.
    }
}

위처럼 함수로 만들어 둔다면 MainWindow.Log("이러한 오류 발생") 형식으로 사용할 수 있습니다.

반응형