Swift 自定义 log

获取打印所在文件

let file = (__FILE__ as NSString).lastPathComponent

获取打印所在的方法

let funcName = #function

获取打印所在行数

let lingNumber = #line

print("\(file):[\(funcName)](\(#line))") 

定义一个全局函数打印

//这里 表示动态类型,传过来的是什么类型就是什么类型,中的 T 只是一种写法 T 也可以被替换成任意字母或字符串
func Log(message: T, file: String = #file, funcName: String = #function, lineNumber: Int = #line) {
        let fileName = (file as NSString).lastPathComponent
    print("\(fileName):(\(lineNumber))-\(message)")
}

  • Xcode 中我们修改运行的是 debug 包还是 release 包可以按照下图修改
0.png

1.png
  • 由于 swift 中没有宏,不能根据宏来判断是 DEBug 还是 release 模式
    所以,如果要判断是 DEBug 还是 Release 模式可以根据下图


    2.png

这样之后就可以根据给 log 方法加一个条件编译,让它在 debug 模式下输出 log 信息

func Log(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 跟一串字符串

你可能感兴趣的:(Swift 自定义 log)