iOS/Tip
로그 Print하기 (Traceable)
까칠코더
2023. 5. 8. 13:52
반응형
UI 작업을 하면서 디버그 로그를 찍어야 할때가 있다. 해당 파일, 라인번호, 함수 등을 print 출력하고자 할때 사용하면 편합니다.
/// 개발시 호출한 파일, 라인번호, 함수명등을 출력하기 위함
/// UIViewController와 UIView는 기본으로 사용하도록 설정함
protocol Traceable {
/// 개발시 Debug Consol 출력
/// - Parameters:
/// - file: 파일명 (default = #file)
/// - line: 라인번호 (default = #line)
/// - function: 함수 이름 (default = #function)
/// - message: 메시지 (default = "")
func trace(file: String, line: Int, function: String, _ message: String)
}
extension Traceable {
func trace(file: String = #file, line: Int = #line, function: String = #function, _ any: Any?) {
#if DEBUG
let fileName = file.components(separatedBy: "/").last ?? "Unknown"
let message = (any == nil) ? "" : " - \(any ?? "")"
print("\(Date().dateTimeString) \(fileName) [\(line)] \(function)\(message)")
#endif
}
func trace(file: String = #file, line: Int = #line, function: String = #function, _ message: String = "") {
#if DEBUG
let fileName = file.components(separatedBy: "/").last ?? "Unknown"
let message = message.isEmpty ? "" : " - \(message)"
print("\(Date().dateTimeString) \(fileName) [\(line)] \(function)\(message)")
#endif
}
}
프로토콜로 상속 받거나 trace 함수만 전역으로 사용해도 됩니다.
import UIKit
extension UIViewController: Traceable { }
extension UIView: Traceable { }
class ViewController: UIViewController {
override func viewDidLoad() {
trace()
}
deinit {
trace()
}
}
반응형