[swift] Swift XCGLogger를 사용하여 로그 파일을 압축하는 방법은 무엇인가요?
Swift에서 로깅을 관리하기 위해 XCGLogger라는 라이브러리를 사용할 수 있습니다. 이 라이브러리를 사용하면 로그를 출력하고 파일에 저장할 수 있으며, 로그 파일의 크기가 커질 때 압축하여 저장할 수도 있습니다.
로그 파일을 압축하는 방법은 다음과 같습니다:
XCGLogger
라이브러리를 프로젝트에 추가하고,import
문으로 라이브러리를 가져옵니다.
import XCGLogger
- 로그를 기록할 파일 객체를 생성합니다.
let log = XCGLogger.default
log.setup(level: .debug, showFunctionName: true, showThreadName: true, showLevel: true, showFileNames: true, showLineNumbers: true)
- 로그 파일의 경로를 설정합니다.
let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString
let logsDirectory = documentsPath.appendingPathComponent("Logs")
log.logAppDetails()
- 로그 파일이 일정 크기를 넘어가면 압축하여 저장합니다.
let fileSize = 1024 * 1024 // 1MB 단위로 로그 파일 크기 설정
let logFileURL = URL(fileURLWithPath: logsDirectory).appendingPathComponent("app.log")
if let fileAttributes = try? FileManager.default.attributesOfItem(atPath: logFileURL.path), let fileSize = fileAttributes[FileAttributeKey.size] as? UInt64 {
if fileSize >= fileSize { // 로그 파일 크기가 fileSize보다 크면
let zipPath = logsDirectory.appending("/app.zip")
let zipURL = URL(fileURLWithPath: zipPath)
do {
try FileManager.default.zipItem(at: logFileURL, to: zipURL, shouldKeepParent: false)
try FileManager.default.removeItem(at: logFileURL)
} catch {
print("Failed to zip log file: \(error)")
}
}
}
위 코드에서는 FileManager
를 사용하여 로그 파일의 크기를 확인하고, 일정 크기를 넘어가면 zipItem
메서드를 사용하여 해당 파일을 압축하고 원본 파일을 삭제합니다. 압축된 파일은 zipURL
에 저장됩니다.
이제 XCGLogger
를 사용하여 로그 파일을 압축하는 방법을 알게 되었습니다. XCGLogger
를 사용하면 로깅을 더욱 쉽고 편리하게 관리할 수 있습니다.