Swift 打印 log 所在的文件,函数和行数

把下面代码放在const(常量)文件中

//获取打印的文件名、打印函数、打印行数
func printLog(_ msg: Any,file: NSString = #file,line: Int = #line,fn: String = #function) {
    
    
    #if DEBUG
    let t = String.formatDate(Date(), "yyyy-MM-dd HH:mm:ss.SSSSSS")
    let prefix = "\(t) \(file.lastPathComponent) -> \(fn) [第\(line)行] \(msg)";
    print(prefix)
    #endif
}

上面的获取时间的方法中有一个String的类方法 我写在了类扩展中,代码如下:

extension String {
    
    
  static func formatDate(_ date:Date,_ format:String) -> String {
    
    
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = format
        return dateFormatter.string(from: date)
     }
 }

使用:

printLog("这是啥啊 ??? ")
//打印结果如下:
//2022-03-10 11:39:06.321000 TestFristController.swift -> viewDidLoad() [第94行] 这是啥啊 ???  

//打印变量
printLog("images == \(images)")
//2022-03-10 11:39:39.898000 TestThridController.swift -> jumbToOtherVC() [第77行] images == [<UIImage:0x2838dc120 anonymous {828, 1472}>, <UIImage:0x2838dc000 anonymous {828, 876}>]

参考了这篇文章,自己做了完善,感谢作者分享

猜你喜欢

转载自blog.csdn.net/weixin_43259805/article/details/123397216