swift怎么自定义Log

作者: zhanming | 来源:发表于2016-05-13 14:11 被阅读319次

    最近在开发swift经常使用printf来打印,大家都知道打印是一件很耗性能的事情,在OC中有 NSLog(format, ...) 自定义Log(format, ##VA_ARGS) 的宏可以使用,在swift中该怎么办呢,网上也有第三方的log但是本着减少对第三方的依赖的想法我们来自定义Log


    自定义Log

    首先我们新建一个类写一个公共的泛型函数

    public func ZMLogs<T>(debug: T, _ file: String = #file , _ function: String = #function, _ line: Int = #line) {
    if(ZMLogsManger.enabled)
    {
        //let fileExtension = file.ns.lastPathComponent.ns.pathExtension
        let filename = file.ns.lastPathComponent.ns.stringByDeletingPathExtension
        print("\(filename):\(function):[\(line)]\(debug)")
    }
    

    }

    我来解释一下:

    1. #file 获取方法调用者所在的文件路径
    2. #function 获取方法调用者所在的方法名
    3. #line 获取所在的行数

    在写一个结构体,里面就一个属性用来管理Log是否开启

    public struct ZMLogsManager {
    
        //是否开启调试
         public static var enabled = true
    
    }
    

    注意:是否开启调试要放在AppDelegate里面设置

    好接下来我们在ViewController里写

    打印

    运行看控制台

    控制台

    是不是很简单呢这是最基本的功能,以后会继续扩展功能,在这里下载代码

    另一种方法:

    不写ZMLogsManager,去自定义comstom flags

    自定义 输入-D DEBUG

    输入-D DEBUG

    现在就可以在代码加上

    public func ZMLogs<T>(debug: T, _ file: String = #file , _ function: String = #function, _ line: Int = #line) {
    
        #if DEBUG
        let filename = file.ns.lastPathComponent.ns.stringByDeletingPathExtension
        print("\(filename):\(function):[\(line)]\(debug)")
        #endif
    }
    

    这种方式也是可以的是不是更高大上了呢

    相关文章

      网友评论

      本文标题:swift怎么自定义Log

      本文链接:https://www.haomeiwen.com/subject/adxmrttx.html