自定义OC,swift log

OC:

#ifdef DEBUG
#define STLog(FORMAT,...)     fprintf(stderr, "打印所在文件:%s\t所在行数:%d\t打印内容:%s\n",[[[NSString stringWithFormat:@"%s",__FILE__] lastPathComponent] UTF8String],__LINE__,[[NSString stringWithFormat: FORMAT,##__VA_ARGS__] UTF8String])
#else 
#define STLog(...)

swift:

 /// 自定义打印,打印包括函数所在的文件以及对应的行号和消息可以使用command+shift+0快速打开文件 再使用command+L快速定位到行号
    ///
    /// - Parameters:
    ///   - message: 所打印的数据 泛型
    ///   - file: 函数所在的文件
    ///   - line: 函数所在的行号
    func UMLog(message: T, file: String = #file, line: Int = #line) {
        // DEBUG模式下才打印
        #if DEBUG
        print("所在文件:\((file as NSString).lastPathComponent)+所在行数:\(line)+对应消息:\(message)")
        #endif
    }

部分参数说明:
1)stderr:stderr -- 标准错误输出设备

stdout -- 标准输出设备 (printf("..")) 同 stdout。

两者默认向屏幕输出。

但如果用转向标准输出到磁盘文件,则可看出两者区别。stdout输出到磁盘文件,stderr在屏幕。

2)VA_ARGS:是一个可变参数的宏,宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多
余的","去掉的作用,否则会编译出错,

  1. FILE 宏在预编译时会替换成当前的源文件名
  2. LINE宏在预编译时会替换成当前的行号
  3. FUNCTION宏在预编译时会替换成当前的函数名称

你可能感兴趣的:(自定义OC,swift log)