自定义打印日志
来源:互联网 发布:2016好声音网络直播 编辑:程序博客网 时间:2024/05/19 03:17
NSStringFromCGRect 打印 view的frame
如:
NSLog(@"view1 frame:%@========view1 bounds:%@",NSStringFromCGRect(view1.frame),NSStringFromCGRect(view1.bounds));
#define _SHOW_DEBUG_LOG_
#ifdef _SHOW_DEBUG_LOG_
#define DebugLog(...) NSLog(__VA_ARGS__)
#else
#define DebugLog(...)
#endif
转载的文章解释:
#define TTLOGLEVEL_INFO 5
#define TTLOGLEVEL_WARNING 3
#define TTLOGLEVEL_ERROR 1
#ifndef TTMAXLOGLEVEL
#define TTMAXLOGLEVEL TTLOGLEVEL_WARNING
#endif
// The general purpose logger. This ignores logging levels.
#ifdef DEBUG
//作者:禚来强 邮箱:zhuolaiqiang@gmail.com
#define TTDPRINT(xx, ...) NSLog(@"%s(%d): " xx, __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
#else
#define TTDPRINT(xx, ...) ((void)0)
#endif // #ifdef DEBUG
// Prints the current method's name.
#define TTDPRINTMETHODNAME() TTDPRINT(@"%s", __PRETTY_FUNCTION__)
// Debug-only assertions.
#ifdef DEBUG
//作者:禚来强 邮箱:zhuolaiqiang@gmail.com
#import <TargetConditionals.h>
#if TARGET_IPHONE_SIMULATOR
int TTIsInDebugger();
// We leave the __asm__ in this macro so that when a break occurs, we don't have to step out of
// a "breakInDebugger" function.
#define TTDASSERT(xx) { if (!(xx)) { TTDPRINT(@"TTDASSERT failed: %s", #xx); /
if (TTIsInDebugger()) { __asm__("int $3/n" : : ); }; } /
} ((void)0)
#else
#define TTDASSERT(xx) { if (!(xx)) { TTDPRINT(@"TTDASSERT failed: %s", #xx); } } ((void)0)
//作者:禚来强 邮箱:zhuolaiqiang@gmail.com
#endif // #if TARGET_IPHONE_SIMULATOR
#else
#define TTDASSERT(xx) ((void)0)
#endif // #ifdef DEBUG
// Log-level based logging macros.
#if TTLOGLEVEL_ERROR <= TTMAXLOGLEVEL
#define TTDERROR(xx, ...) TTDPRINT(xx, ##__VA_ARGS__)
#else
#define TTDERROR(xx, ...) ((void)0)
#endif // #if TTLOGLEVEL_ERROR <= TTMAXLOGLEVEL
#if TTLOGLEVEL_WARNING <= TTMAXLOGLEVEL
#define TTDWARNING(xx, ...) TTDPRINT(xx, ##__VA_ARGS__)
#else
#define TTDWARNING(xx, ...) ((void)0)
#endif // #if TTLOGLEVEL_WARNING <= TTMAXLOGLEVEL
#if TTLOGLEVEL_INFO <= TTMAXLOGLEVEL
#define TTDINFO(xx, ...) TTDPRINT(xx, ##__VA_ARGS__)
#else
#define TTDINFO(xx, ...) ((void)0)
#endif // #if TTLOGLEVEL_INFO <= TTMAXLOGLEVEL
#ifdef DEBUG
#define TTDCONDITIONLOG(condition, xx, ...) { if ((condition)) { /
TTDPRINT(xx, ##__VA_ARGS__); /
} /
} ((void)0)
#else
#define TTDCONDITIONLOG(condition, xx, ...) ((void)0)
#endif // #ifdef DEBUG
一。log是什么?
three20Debug添加新的特性,可以更加容易的停止在控制台中打印log。可以有选择性的打印某些信息。
二。如何让three20打印log?
yourproject->getinfo—>bulid->Gcc_preprocessor_definitions->debug中定义一个DEBUG宏。你不应该在你的release(发布版本)版本中定义这个宏,要不然你的app会被拒绝。
千万不要把调试版本提交给appstore。
//作者:禚来强 邮箱:zhuolaiqiang@gmail.com
三。如何打印log?
ttdebug引入了一个具有不同优先级的宏。如下:
TTDERROR(text, ...) // Priority level 1
TTDWARNING(text, ...) // Priority level 3
TTDINFO(text, ...) // Priority level 5
TTDPRINT(text, ...) // Always prints
三。优先级意味着什么?
如果宏的优先级小于TTMAXLOGEVEL,则就会被打印。所以默认情况下把它设置为3,则优先级别大于3的宏将要不被打印。
//作者:禚来强 邮箱:zhuolaiqiang@gmail.com
如果TTMAXLOGEVEL没有被设置,则缺省是3,这意味着只有warning和error会被打印。
四。有条件的打印
//作者:禚来强 邮箱:zhuolaiqiang@gmail.com
#define TTDCONDITIONLOG(condition, xx, ...) { if ((condition)) { /
TTDPRINT(xx, ##__VA_ARGS__); /
} /
} ((void)0)
- 自定义打印日志
- NJLog 自定义日志打印
- IOS自定义打印日志
- 自定义日志打印
- Android自定义kernel日志打印
- 自定义assert宏 出错时打印日志
- java.util.logging自定义打印日志
- 基于自定义日志打印的UDAF调试
- Android自定义日志打印 开发时打印正式上线时不打印
- 如何查找和查看自定义coprocessor中打印的日志信息
- android studio 魅族真机 flyme6 下logcat 打印自定义日志
- 日志打印
- 日志打印
- 日志打印
- 日志打印
- 打印日志
- 日志打印
- 日志打印
- C++构造函数调用顺序
- 将显示对象置于PopUpManager创建的显示容器之上
- C#下串口编程测试
- No Tax Information Found During Consignment Settlement
- ExecutorService线程池
- 自定义打印日志
- Ubuntu下安装Oracle 10G注意要点
- 深入了解javascript中的exec与match方法
- VS2005混合编译ARM汇编代码
- spring核心之依赖注入(一)设置注入
- FTP基本实现类
- Ubuntu上安装Oracle 10G及相关配置
- c语言小程序,请教!!???
- 对老赵写的简单性能计数器的修改