반응형

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()
	}
}
반응형
Posted by 까칠코더
,