iOS发送探针日志到日志系统的简单实现
阅读原文时间:2023年09月06日阅读:6

通过参考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. #import "MyClass.h"

  9. #import

  10. #import

  11. #import

  12. #import

  13. #import

  14. #import

  15. #import

  16. #import

  17. #import

  18. #import

  19. #import

  20. static const in_port_t kPortNumber = 11215;

  21. @implementation MyClass

  22. -(void) getConn

  23. {

  24.     const char* hostname = "log.qa.huayu.nd";

  25.     struct sockaddr_storage* server_addr_ptr;

  26.     struct sockaddr_in* sock_addr_ptr;

  27.     struct sockaddr_storage server_addr;

  28.     struct hostent *host = NULL;

  29.     host = gethostbyname2(hostname, AF_INET);

  30.     server_addr_ptr = &server_addr;

  31.     server_addr.ss_family = host->h_addrtype;

  32.     sock_addr_ptr = (struct sockaddr_in*)server_addr_ptr;

  33.     sock_addr_ptr->sin_len = sizeof(*sock_addr_ptr);

  34.     sock_addr_ptr->sin_port = htons(kPortNumber);

  35.     sock_addr_ptr->sin_addr = *(struct in_addr*)host->h_addr_list[0];

  36.     memset(&sock_addr_ptr->sin_zero, 0, sizeof(sock_addr_ptr->sin_zero));

  37.     int sockfd;

  38.     sockfd = socket(server_addr.ss_family, SOCK_STREAM, 0);

  39.     int err = connect(sockfd, (struct sockaddr *)&server_addr, server_addr.ss_len);

  40.     const char *bytes = "9996:hello, ios\n";

  41.     char buffer[30];

  42.     int i;

  43.     for (i = 0; i < 15; i++) {

  44.         buffer[i] = bytes[i];

  45.     }

  46.     buffer[i] = '\0';

  47.     write(sockfd, buffer, 15);

  48.     close(sockfd);

  49.     NSLog(@"conn: %d %d", err, (int)sizeof(buffer));

  50.     // memset(&sock_addr_ptr-

  51.     NSLog(@"hello");

  52.     NSLog(@"send log to huayu");

  53. }

  54. @end

然后,开始编译

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

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

运行:

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

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

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

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章