[swift] 파일 기록 로깅하기

앱 개발 시 디버깅이나 로그 작성은 매우 중요합니다. 종종 앱에서 발생하는 문제를 해결하기 위해 로그를 기록하고 분석해야 할 때가 있습니다. 이번 글에서는 Swift로 파일에 로그를 기록하는 방법을 알아보겠습니다.

1. 로그 파일 경로 설정하기

먼저, 로그를 저장할 파일의 경로를 설정해야 합니다. 아래의 코드를 사용하여 앱 내 Document 디렉토리에 “log.txt” 파일을 생성합니다.

let fileManager = FileManager.default
let documentsDirectory = try! fileManager.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
let logFilePath = documentsDirectory.appendingPathComponent("log.txt")

2. 로그 기록 함수 생성하기

로그를 파일에 기록하기 위해 다음과 같은 함수를 생성합니다.

func logToFile(_ log: String) {
    do {
        if !fileManager.fileExists(atPath: logFilePath.path) {
            try "".write(to: logFilePath, atomically: true, encoding: .utf8)
        }
        
        if let fileHandle = try? FileHandle(forWritingTo: logFilePath) {
            defer {
                fileHandle.closeFile()
            }
            
            fileHandle.seekToEndOfFile()
            
            if let data = log.appending("\n").data(using: .utf8) {
                fileHandle.write(data)
            }
        }
    } catch {
        print("Error writing to log file: \(error)")
    }
}

위의 코드에서는 먼저 파일이 존재하지 않을 경우 빈 파일을 생성하고, 해당 파일에 로그를 기록합니다.

3. 로그 기록하기

이제 로그를 기록해봅시다. 아래와 같이 원하는 로그를 logToFile() 함수에 전달하면 해당 로그가 파일에 기록됩니다.

logToFile("앱 시작됨")
logToFile("앱 종료됨")

4. 로그 파일 읽기

만약 로그 파일을 읽고 싶다면 아래의 함수를 사용하여 파일을 읽을 수 있습니다.

func readLogFile() -> String? {
    do {
        let logText = try String(contentsOf: logFilePath, encoding: .utf8)
        return logText
    } catch {
        print("Error reading log file: \(error)")
        return nil
    }
}

위의 함수를 호출하면 로그 파일의 내용이 문자열 형태로 반환됩니다.

마무리

이제 Swift로 파일에 로그를 기록하는 방법에 대해 알아보았습니다. 로깅 기능을 추가하여 앱 개발 시 디버깅에 도움을 줄 수 있으며, 사용자들이 발생하는 문제를 분석하는 데 유용합니다.