Swift 自定义Log
由于在swift中log日志打印过于简单,不能显示log日志在哪个具体的文件、哪个方法、第几行代码中,如果log打印一多便使开发者无法精准定位,所以有了下面的方法:
//获取打印所在文件
let file1 = #line
//获取打印所在方法
let file2 = #function
//获取打印所在行数
let file1 = #line
//打印
print("\(fileName):[\(funcName)](\(lineNum))-\(message)")
效果如下:
但是在开发中应该写成全局函数:
func YJLog<T>(message:T,file : String = #file, funcName : String = #function, lineNum : Int = #line){
let fileName = (file as NSString).lastPathComponent
print("\(fileName):[\(funcName)](\(lineNum))-\(message)")
}
在任何一个swift文件中都可以直接调用:
YJLog(message: "打印我想看的")
打印效果如下:
上面的全局函数是不区分Debug和Release的,那么如何区分呢?
1、首先你应该先给debug设置一个标识符,步骤如下:
设置了一个 -D DEBUG的标志
2、代码如下:
func YJLog<T>(message:T,file : String = #file, funcName : String = #function, lineNum : Int = #line){
//判断是不是有 debug 标识
#if DEBUG
let fileName = (file as NSString).lastPathComponent
print("\(fileName):[\(funcName)](\(lineNum))-\(message)")
#endif
}