不管哪种方法,都必须在PCH文件中做下宏定义

DEBUG和RELEASE要分开,RELEASE时log打印要取消

方法一:简单直接,用几行代码搞定,简洁但功能少

#ifdef DEBUG
#define NSLog(...) NSLog(__VA_ARGS__)
#define debugMethod() NSLog(@"%s", __func__)
#else
#define NSLog(...)
#define debugMethod()
#endif

这个DEBUG在哪设置呢,

在 "Target > Build Settings > Preprocessor Macros > Debug" 里有一个"DEBUG=1"。

设置为Debug模式下,Product-->Scheme-->SchemeEdit Scheme

设置Build Configuration成Debug时,就可以打印nslog了。
设置Release,发布app版本的时候就不会打印了,提高了性能
 
或者
#ifdef DEBUG
#define **Log( s, ... ) NSLog( @"<%p %@:(%d)> %@", self, [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] )//分别是方法地址,文件名,在文件的第几行,自定义输出内容
#else
#define **Log( s, ... )
#endif

其中:**Log( s, ... )的**是随便你自定义的名字,方便代码直接拷走使用。

 
方法二:第三方,多彩log,功能多,但稍复杂
 

1.下载框架

// 让控制台可以输出颜色插件

https://github.com/robbiehanson/XcodeColors

// 带色彩日志框架

https://github.com/CocoaLumberjack/CocoaLumberjack

2.安装XcodeColors(输出颜色插件)

3.导入色彩日志框架

===========================================================

1.定义日志级别

#ifdef DEBUG

static const int ddLogLevel = LOG_LEVEL_VERBOSE;

#else

static const int ddLogLevel = LOG_LEVEL_OFF;

#endif

2. 在didFinishLaunchingWithOptions方法中初始化带色彩日志

[DDLog addLogger:[DDTTYLogger sharedInstance]];

3.开启色彩日志

[[DDTTYLogger sharedInstance] setColorsEnabled:YES];

4.使用带色彩日志

5.修复Xcode6不显示色彩日志问题

>In Xcode bring up the Scheme Editor (Product -> Edit Scheme...)

>Select "Run" (on the left), and then the "Arguments" tab

>Add a new Environment Variable named "XcodeColors", with a value of "YES"

===========================================================

1.日志类型

DDLog:基础类,必须引入的。

DDASLLogger:支持将调试语句写入到苹果的日志中。一般正对Mac开发。可选。

DDTTYLogger:支持将调试语句写入xCode控制台。我们即使要用它。可选。

DDFileLogger:支持将调试语句写入到文件系统。可选。

2.DDLog日志种类。

DDLogError:定义输出错误文本

DDLogWarn:定义输出警告文本

DDLogInfo:定义输出信息文本

DDLogDebug:定义输出调试文本

DDLogVerbose:定义输出详细文本

3.日志级别

>LOG_LEVEL_ERROR,那么你只会看到DDlogError语句。

>LOG_LEVEL_WARN,那么你只会看到DDLogError和DDLogWarn语句。

>LOG_LEVEL_INFO,那么你会看到error、Warn和Info语句。

>LOG_LEVEL_VERBOSE,那么你会看到所有DDLog语句。

>LOG_LEVEL_OFF,你将不会看到任何DDLog语句。

===========================================================

1.自定义颜色

[[DDTTYLogger sharedInstance] setForegroundColor:[UIColor greenColor] backgroundColor:[UIColor purpleColor] forFlag:DDLogFlagInfo];

// 快速定位打印方法

#define DDInfoLog DDLogWarn(@"%d %s", __LINE__ ,__func__)

 

iOS开发中关于nslog的几种流行做法小结的更多相关文章

  1. IOS开发中数据持久化的几种方法--NSUserDefaults

    IOS开发中数据持久化的几种方法--NSUserDefaults IOS 开发中,经常会遇到需要把一些数据保存在本地的情况,那么这个时候我们有以下几种可以选择的方案: 一.使用NSUserDefaul ...

  2. iOS开发中数组常用的五种遍历方式

    随着iOS的不断发展,apple也不断推出性能更高的数组遍历方式,下面将对熟悉的五种遍历方式进行列举. 首先定义一个数组,并获取数组长度 NSArray *array=@[",]; NSIn ...

  3. IOS开发中针对UIImageView的几种常用手势

    // //  ViewController.m //  05-手势 // //  Created by wanghy on 15/9/21. //  Copyright (c) 2015年 wangh ...

  4. 怎样实现IOS开发中的数据存储方式

    iOS 开发中,一般有如下几种数据存储方式.需要根据具体的业务场景,选择 合适的数据存储方式. (1)  用户默认设置 – 这种情况通常不需要用户干预,如游戏通关信息,Video 播放记录,或者 Ap ...

  5. iOS开发中的4种数据持久化方式【二、数据库 SQLite3、Core Data 的运用】

                   在上文,我们介绍了ios开发中的其中2种数据持久化方式:属性列表.归档解档.本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运 ...

  6. iOS开发中的4种数据持久化方式【一、属性列表与归档解档】

    iOS中的永久存储,也就是在关机重新启动设备,或者关闭应用时,不会丢失数据.在实际开发应用时,往往需要持久存储数据的,这样用户才能在对应用进行操作后,再次启动能看到自己更改的结果与痕迹.ios开发中, ...

  7. iOS开发中NSLog输出格式大全

    本文的内容是总结了一下iOS开发中NSLog输出格式大全,虽然比较基础,但有总结毕竟会各位正在学习iOS开发的朋友们一些小小的帮助. %@                   对象 %d, %i    ...

  8. iOS开发UI篇—iOS开发中三种简单的动画设置

    iOS开发UI篇—iOS开发中三种简单的动画设置 [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView b ...

  9. iOS开发中静态库之".framework静态库"的制作及使用篇

    iOS开发中静态库之".framework静态库"的制作及使用篇 .framework静态库支持OC和swift .a静态库如何制作可参照上一篇: iOS开发中静态库之" ...

随机推荐

  1. MyBatis学习笔记(二) 关联关系

    首先给大家推荐几个网页: http://blog.csdn.net/isea533/article/category/2092001 没事看看 - MyBatis工具:www.mybatis.tk h ...

  2. Java.util.concurrent包学习(一) BlockingQueue接口

    JDK1.7 BlockingQueue<E>接口 (extends Queue<E>) 所有父接口:Collection<E>,Iterable<E> ...

  3. 原!!tomcat7.0 配置数据库连接池 SQLServer2000

    SQLServer2000所需的3个驱动jar包 msbase.jarmssqlserver.jarmsutil.jar 放入WEB-INF lib文件夹中 1.META-INF 创建一个contex ...

  4. hiho_1058_combination_lock

    题目大意 给定N个字符,范围为A-Z,编号为1-N,对该字符序列进行M个操作,操作有4中类型: (1)CMD 1 i j X     将[i, j]区间内的字符均变为X (2)CMD 2 i j K  ...

  5. 线性表 - 从零开始实现by C++

    参考链接:数据结构探险之线性表篇     线性表

  6. 基于websocket的jsp与java进行交互

    环境:jdk.18   tomcat-7.0.70 把tomcat中的 两个jir包复制到 注意:最后部署的时候要删除掉这两个jar包 tomcate中已经有了 ebSocket对象的创建和服务器连接 ...

  7. centos7命令

    查看ip ip addr ip link 添加服务 systemctl enable nginx 添加防火墙端口 firewall-cmd --zone=public --add-port=80/tc ...

  8. chrome浏览器下页面顶部出现一条空白解决

    最近遇到页面在chrome浏览器下,顶部会出现一条空白的问题.后来知道是bom头的问题. 1.什么是bom头? BOM签名的意思就是告诉编辑器当前文件采用何种编码,方便编辑器识别,但是BOM虽然在编辑 ...

  9. 工作日志 jquery slideDown slideUp

    jquery里面使用 slideDown 和  slideUp会有一个像素的偏差

  10. Java线程与多线程教程

    本文由 ImportNew - liken 翻译自 Journaldev.   Java线程是执行某些任务的轻量级进程.Java通过Thread类提供多线程支持,应用可以创建并发执行的多个线程. 应用 ...