由于Swift 使用print()打印比较简单,所以如果在项目中使用时会不知道是在什么地方使用了print()来打印,而且一般我们做项目都是在Debug环境下打印,在Relese环境下不打印日志,自定义以后,我们可以看到这个打印值是在具体的那一个文件下的那一行进行输出的,这样我们就可以快速的找到打印的位置。下面就开始自定义了。
1.首先设置在debug下打印日志,在swift中没有了宏定义,所以设置debug 状态和OC 不同,如下图设置debug状态
2.开始封log日志函数,他包含了打印的信息,以及打印所在的 文件和行数
打印日志在很多文件都会用到,所以我们把它写成全局函数,这样在每个文件里面都可以进行调用
这是写在AppDelegate.swift文件里面
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
LMlog("gggggg")
return true }
}
/// MARK:- 全局函数,在每个类都可以调用
其中 <T>表示泛型,file是print所在的文件,funcName是所在文件的方法,lineNum是所在文件的多少行。
func LMlog<T>(_ message:T,file:String = #file,funcName:String = #function,lineNum:Int = #line) {
#if DEBUG // 设置在DEBUG 环境下打印LOG , DEBUG就是在Build Settings 里面设置的标识。
// 1.获取打印所在的文件
let file = (file as NSString).lastPathComponent
// //2.获取打印所在的方法
// let funcName = funcName
// //3.获取打印所在的行
// let lineNum = lineNum
print("\(file)(\(lineNum)) - \(message)")
#endif
}