Swift 自定义 log
2018-08-26 本文已影响0人
张_何
获取打印所在文件
let file = (__FILE__ as NSString).lastPathComponent
获取打印所在的方法
let funcName = #function
获取打印所在行数
let lingNumber = #line
print("\(file):[\(funcName)](\(#line))")
定义一个全局函数打印
//这里<T> 表示动态类型,传过来的是什么类型就是什么类型,<T>中的 T 只是一种写法 T 也可以被替换成任意字母或字符串
func Log<T>(message: T, file: String = #file, funcName: String = #function, lineNumber: Int = #line) {
let fileName = (file as NSString).lastPathComponent
print("\(fileName):(\(lineNumber))-\(message)")
}
- Xcode 中我们修改运行的是 debug 包还是 release 包可以按照下图修改
1.png
-
由于 swift 中没有宏,不能根据宏来判断是 DEBug 还是 release 模式
所以,如果要判断是 DEBug 还是 Release 模式可以根据下图
2.png
这样之后就可以根据给 log 方法加一个条件编译,让它在 debug 模式下输出 log 信息
func Log<T>(message: T, file: String = #file, funcName: String = #function, lineNumber: Int = #line) {
#if ABCD
let fileName = (file as NSString).lastPathComponent
print("\(fileName):(\(lineNumber))-\(message)")
#endif
}
给 release 模式添加标识符也是一样 -D 跟一串字符串