不管哪种方法,都必须在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. gcj_2016_Round1_B

    题目 一个NxN的矩阵,矩阵中每个方格中都有一个数值,且每一行的数值严格单调递增,每一列的数值严格单调递增.分别取出N行和N列,形成2N个长度为N的数组,现在有一个数组丢失,已知剩下的2N-1个长度为 ...

  2. Django中如何配置Database缓存?

    BACKEND: django.core.cache.backends.db.DatabaseCache LOCATION: 数据库表名 示例: CACHES = { 'default': { 'BA ...

  3. this和call

    function foo(x){ console.log(x);} foo.call(this,'abc');console.log(this); ---- abc

  4. phalcon: plugin 结合Manager事件管理、dispatcher调度控制器 监听sql日志记录或其他拦截出来

    可能用到的类 phalcon\mvc\use\plugin Phalcon\Mvc\Dispatcher as MvcDispatcher Phalcon\Events\Manager as Even ...

  5. word-break:break-all和word-wrap:break-word的区别

    了解word-break属性 /* 关键字值 */ word-break: normal; word-break: break-all; word-break: keep-all; /* 全局值 */ ...

  6. robotframework笔记21

    创建输出 当执行测试,创建多个输出文件和所有的 都以某种方式相关测试结果. 本节讨论什么 输出创建.如何配置创建,以及如何 调整他们的内容. 不同的输出文件 本节解释了不同可以创建和输出文件 如何配置 ...

  7. [Java] Java 获取数据库所有表基本信息和表中的所有列基本信息代码

    废话不多说.上代码 import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import ...

  8. WEB前端性能优化:HTML,CSS,JS和服务器端优化

    对前端开发工程师来说,前端性能优化的重要性是不言而喻的,最为大家所知的是YSLOW的23条优化规则,在我的理解中,性能优化不纯粹是指用户访问网站的速度,也包括开发的效率,这里我总结下我理解中的WEB前 ...

  9. [译]Quartz 框架 教程(中文版)2.2.x 之第一课 开始使用Quartz框架

    第一课:开始使用Quartz框架 在你使用调度器之前,需要借助一些具体的例子去理解(谁愿意只是猜啊?).你可以使用SchedulerFactory类来达到程序调度的目的.有一些Quartz框架的用户可 ...

  10. HTML5的 2D SVG和SVG DOM的学习笔记(1)

    (项目中要使用SVG,只好补充知识了) HTML体系中,最常用的绘制矢量图的技术是SVG和HTML5新增加的canvas元素.这两种技术都支持绘制矢量图和光栅图. 一.SVG概述 可缩放矢量图形(Sc ...