swift自定义log

第一步:获取打印文件名,方法名,行数

//1.获取打印所在的文件
let file = (#file as NSString).lastPathComponent;
print(file);

//2.获取打印所在的方法
let function = #function
print(function);

//3.获取打印所在的行号
let line = #line;
print(line)

第二步:全局化

swift中的 全局函数:写在每个文件对应的类外部
全局函数大部分写在APPdelegate中

此时就可以这样写

func ZNLog<T>(message:T, file:String = #file, funcName:String = #function, lineNum:Int = #line) {

     let fileName = (file as NSString).lastPathComponent;

     print("[文件名:\(fileName)]:[行数:\(lineNum)]-打印内容:\n\(message)");

}

第三步:配置DeBug下打印, Release 下不打印

swift中没有宏定义,只能通过添加配置字段

图片.png

最终写法

func ZNLog<T>(message:T, file:String = #file, funcName:String = #function, lineNum:Int = #line) {

 #if DEBUG

       let fileName = (file as NSString).lastPathComponent;

      print("[文件名:\(fileName)]:[行数:\(lineNum)]-打印内容:\n\(message)");

 #endif

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • NO.1 先了解下 Debug 和 Release 的区别 Release是发行版本,比Debug版本有一些优化,...
    浮桥小麦阅读 908评论 0 0
  • Swift中打印不像OC那样每次打印系统会自己打印出时间和所在类名,所以在swift中要自己封装.自定义Log要用...
    Mortimey_yt阅读 430评论 0 1
  • 在开发过程中,打印Log进行调试是必不可少的,但是在上线之后这些Log会很消耗性能资源,同时我们又想在Log中显示...
    Vonkin阅读 4,190评论 0 3
  • 1 相关知识点 (1)获取所在文件 (2)获取在的方法 (3)获取在的行数 2 自定义log (1)在AppDel...
    小码码阅读 492评论 1 3
  • 导语在开发中经常会打印出一些内容来进行调试,但是这些打印内容会消耗性能,所以我们需要在 Release (发布)的...
    三十六_阅读 695评论 0 0