码迷,mamicode.com
首页 > 移动开发 > 详细

iOS发送探针日志到日志系统的简单实现

时间:2015-06-10 19:25:14      阅读:305      评论:0      收藏:0      [点我收藏+]

标签:

?

通过参考Testin的SDK实现方式,我们大致可以确定他们背后的实现方式:

?

首先,通过加载Testin的SDK,然后收集各种七七八八的数据,再通过socket发送数据到云端。

?

云端我们已经有了,就是http://log.qa.huayu.nd:8088

?

但是如何从iOS收集数据呢,我们需要自己写SDK,SDK的实现一般是采用framework来打包,但是这里简单为主,我将使用静态库来实现,我这里实现的是libHyLog01.a

?

要编写这样的库,你需要一台Mac,需要xcode开发环境

?

使用xcode新建一个静态库项目

技术分享

?

新建一个类:

MyClass

技术分享

技术分享

?

然后,开始写探针日志发送代码:

?

  1. //
  2. // MyClass.m
  3. // HyLog01
  4. //
  5. // Created by 林 志宏 on 15-6-10.
  6. // Copyright 2015年 网龙公司. All rights reserved.
  7. //
  8. ?
  9. #import "MyClass.h"
  10. #import <arpa/inet.h>
  11. #import <errno.h>
  12. #import <netdb.h>
  13. #import <netinet/in.h>
  14. #import <stdbool.h>
  15. #import <stdio.h>
  16. #import <stdlib.h>
  17. #import <string.h>
  18. #import <sys/socket.h>
  19. #import <sys/types.h>
  20. #import <unistd.h>
  21. ?
  22. static const in_port_t kPortNumber = 11215;
  23. ?
  24. @implementation MyClass
  25. -(void) getConn
  26. {
  27. ????const char* hostname = "log.qa.huayu.nd";
  28. ?
  29. ????struct sockaddr_storage* server_addr_ptr;
  30. ????struct sockaddr_in* sock_addr_ptr;
  31. ????struct sockaddr_storage server_addr;
  32. ????struct hostent *host = NULL;
  33. ?
  34. ????host = gethostbyname2(hostname, AF_INET);
  35. ?
  36. ????server_addr_ptr = &server_addr;
  37. ?
  38. ????server_addr.ss_family = host->h_addrtype;
  39. ????sock_addr_ptr = (struct sockaddr_in*)server_addr_ptr;
  40. ????sock_addr_ptr->sin_len = sizeof(*sock_addr_ptr);
  41. ????sock_addr_ptr->sin_port = htons(kPortNumber);
  42. ????sock_addr_ptr->sin_addr = *(struct in_addr*)host->h_addr_list[0];
  43. ????memset(&sock_addr_ptr->sin_zero, 0, sizeof(sock_addr_ptr->sin_zero));
  44. ????int sockfd;
  45. ????sockfd = socket(server_addr.ss_family, SOCK_STREAM, 0);
  46. ????int err = connect(sockfd, (struct sockaddr *)&server_addr, server_addr.ss_len);
  47. ????const char *bytes = "9996:hello, ios\n";
  48. ????char buffer[30];
  49. ????int i;
  50. ????for (i = 0; i < 15; i++) {
  51. ????????buffer[i] = bytes[i];
  52. ????}
  53. ????buffer[i] = ‘\0‘;
  54. ????write(sockfd, buffer, 15);
  55. ????close(sockfd);
  56. ????NSLog(@"conn: %d %d", err, (int)sizeof(buffer));
  57. ????// memset(&sock_addr_ptr-
  58. ????NSLog(@"hello");
  59. ????NSLog(@"send log to huayu");
  60. }
  61. @end

?

然后,开始编译

技术分享

?

接下来,就是在我们的实际项目中进行引用了

我创建了一个View_Switcher项目来引用我刚刚开发的库

?

技术分享

?

运行:

技术分享

?

然后,我们可以看到我们的日志系统服务端收到了数据了:

http://log.qa.huayu.nd:8088/

技术分享

?

参考文献:

http://blog.sina.com.cn/s/blog_7b9d64af0101jlym.html

iOS发送探针日志到日志系统的简单实现

标签:

原文地址:http://www.cnblogs.com/cleardo/p/4567007.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!