怎么把ios应用的log导出到document
1个回答
展开全部
首先是日志输出,分为c的printf和标准的NSLog输出,printf会向标准输出(sedout)打印,而NSLog则是向标准出错(stderr),我们需要同时让他们都将日志打印到一个文件中。
例子:
freopen("xx.log","a+",stdout);
freopen("xx.log","a+",stderr);
具体做法:
#pragma mark - 用户方法,将nslog的输出信息写入到dr.log文件中
// 将NSlog打印信息保存到Document目录下的文件中
//此函数要在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions中调用,这个函数在AppDelegate.m中实现的。
- (void)redirectNSlogToDocumentFolder
{
NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentDirectory = [paths objectAtIndex:0];
NSString *fileName = [NSStringstringWithFormat:@"dr.log"];//注意不是NSData!
NSString *logFilePath = [documentDirectory stringByAppendingPathComponent:fileName];
//先删除已经存在的文件
NSFileManager *defaultManager = [NSFileManagerdefaultManager];
[defaultManagerremoveItemAtPath:logFilePath error:nil];
// 将log输入到文件
freopen([logFilePathcStringUsingEncoding:NSASCIIStringEncoding],"a+", stdout);
freopen([logFilePathcStringUsingEncoding:NSASCIIStringEncoding],"a+", stderr);
}
此函数要在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
中调用,这个函数在AppDelegate.m中实现的。
/*******************************************************************************/
//当真机连接Mac调试的时候把这些注释掉,否则log只会输入到文件中,而不能从xcode的监视器中看到。
// 如果是真机就保存到Document目录下的dr.log文件中
UIDevice *device = [UIDevicecurrentDevice];
if (![[device model]isEqualToString:@"iPad Simulator"]) {
// 开始保存日志文件
[selfredirectNSlogToDocumentFolder];
}
/*******************************************************************************/
最后配置共享文件夹:
在应用程序的Info.plist文件中添加UIFileSharingEnabled键,并将键值设置为YES。将您希望共享的文件放在应用程序的 Documents目录。一旦设备插入到用户计算机,iTunes9.1就会在选中设备的Apps标签中显示一个File Sharing区域。此后,用户就可以向该目录添加文件或者将文件移动到桌面计算机中。如果应用程序支持文件共享,当文件添加到Documents目录后,应用程序应该能够识别并做出适当响应。例如说,应用程序可以将新文件的内容显示界面上。请不要向用户展现目录的文件列表并询问他们希望对文件执行什么操作。
就是说,一旦设备连接上电脑,可以通过iTune查看指定应用程序的共享文件夹,将文件拷贝到你的电脑上看。
参考连接:
例子:
freopen("xx.log","a+",stdout);
freopen("xx.log","a+",stderr);
具体做法:
#pragma mark - 用户方法,将nslog的输出信息写入到dr.log文件中
// 将NSlog打印信息保存到Document目录下的文件中
//此函数要在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions中调用,这个函数在AppDelegate.m中实现的。
- (void)redirectNSlogToDocumentFolder
{
NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentDirectory = [paths objectAtIndex:0];
NSString *fileName = [NSStringstringWithFormat:@"dr.log"];//注意不是NSData!
NSString *logFilePath = [documentDirectory stringByAppendingPathComponent:fileName];
//先删除已经存在的文件
NSFileManager *defaultManager = [NSFileManagerdefaultManager];
[defaultManagerremoveItemAtPath:logFilePath error:nil];
// 将log输入到文件
freopen([logFilePathcStringUsingEncoding:NSASCIIStringEncoding],"a+", stdout);
freopen([logFilePathcStringUsingEncoding:NSASCIIStringEncoding],"a+", stderr);
}
此函数要在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
中调用,这个函数在AppDelegate.m中实现的。
/*******************************************************************************/
//当真机连接Mac调试的时候把这些注释掉,否则log只会输入到文件中,而不能从xcode的监视器中看到。
// 如果是真机就保存到Document目录下的dr.log文件中
UIDevice *device = [UIDevicecurrentDevice];
if (![[device model]isEqualToString:@"iPad Simulator"]) {
// 开始保存日志文件
[selfredirectNSlogToDocumentFolder];
}
/*******************************************************************************/
最后配置共享文件夹:
在应用程序的Info.plist文件中添加UIFileSharingEnabled键,并将键值设置为YES。将您希望共享的文件放在应用程序的 Documents目录。一旦设备插入到用户计算机,iTunes9.1就会在选中设备的Apps标签中显示一个File Sharing区域。此后,用户就可以向该目录添加文件或者将文件移动到桌面计算机中。如果应用程序支持文件共享,当文件添加到Documents目录后,应用程序应该能够识别并做出适当响应。例如说,应用程序可以将新文件的内容显示界面上。请不要向用户展现目录的文件列表并询问他们希望对文件执行什么操作。
就是说,一旦设备连接上电脑,可以通过iTune查看指定应用程序的共享文件夹,将文件拷贝到你的电脑上看。
参考连接:
微测检测5.10
2023-05-10 广告
2023-05-10 广告
您好!建议咨 深圳市微测检测有限公司,已建立起十余个专业实验室,企业通过微测检测就可以获得一站式的测试与认 证解决方案;(EMC、RF、MFi、BQB、QI、USB、安全、锂电池、快充、汽车电子EMC、汽车手机互 联、语音通话质量),认证遇...
点击进入详情页
本回答由微测检测5.10提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询