iOS重定向输出打印(NSLog、printf)

本文介绍了如何在iOS SDK开发中实现日志重定向,以便于在SDK和App层之间区分调试日志。通过定义CLog和CPrintf宏,结合单例类ZJLogSDK,提供了代理回调给App层展示或保存日志。这种方法避免了直接输出到文件,简化了日志查找过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:本文是重定向日志输出到项目的其他模块,非重定向直接输出到文件。       

在项目开发的时候,碰到一个很纠结的问题:因本人做的是iOS SDK层,同事做的是App层,因分工不同,在调试和修复Bug的时候需要提供明确清晰的日志。若把项目中的全部日志都输出到一个文件中,查找杂乱而繁琐,而我也只需要SDK层的日志,因此日志重定向到文件在此已不再合适(使用freopen重定向stdout、stderr输出路径即可,网上教程较多)。

因此个人根据需求分析之后,定义了2个宏:CLogCPrintf(也可重写系统的NSLog,printf接口,在此为了不混淆系统接口和功能,自己重新定义了2个宏),再单独封装了一个单例类ZJLogSDK,提供一个代理回调给App层进行显示或保存。

#define CLog(...) [[ZJLogSDK sharedTool] sendLogStr:[NSString stringWithFormat:__VA_ARGS__]]
#define CPrintf(...)  \
{\
    char cLogBuf[1024] = {0}; /*只支持1024个字节的输出(可自行调节大小)*/\
    snprintf((char *)cLogBuf, sizeof(cLogBuf), __VA_ARGS__); /*将格式字符串和可变参数列表保存到cLogBuf中*/\
    CPrintfCallback(cLogBuf); /*此函数定义在只包含c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

W2Y

大侠留步,有馒头否?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值