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

?

通过参考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

时间: 2024-10-04 23:20:47

iOS发送探针日志到日志系统的简单实现的相关文章

iOS各框架功能简述以及系统层次结构简单分析

iOS各个框架所对应的功能简单介绍 iOS系统结构层次: 注明:以上图片截取自网络教学资料刘凡的PPT ,若有侵犯之处,请联系删除

Es+kafka搭建日志存储查询系统(设计)

现在使用的比较常用的日志分析系统有Splunk和Elk,Splunk功能齐全,处理能力强,但是是商用项目,而且收费高.Elk则是Splunk项目的一个开源实现,Elk是ElasticSearch(Es).Logstash.Kibana上个项目结合.Es就是基于Lucene的存储,索引的搜索引擎:logstash是提供输入输出及转化处理插件的日志标准化管道:Kibana提供可视化和查询统计的用户界面.往往这些开源项目并不是适合每一个公司的业务,业务不同,对开源项目扩展也就不同,logstash进行

日志收集分析系统架构

日志收集分析系统架构   一.部署架构 日志收集系统一般包括如图所示三层.Web服务器层,日志收集层,日志存储层.Web服务器层是日志的来源,一般部署web应用供用户访问,产生日志,该节点上一般需要部署日志收集程序的agent.日志收集层手机web服务器产生的日志传输给日志存储层,存储层一般使用分布式文件系统HDFS,日志可以存储在hdfs上或者hbase上. 以scribe作为日志收集系统架构,scribe分为scribe agent和scribe server 以kafka作为日志收集系统架

iOS中debug调试输出日志

在.pch中写: #ifdef DEBUG  // 调试阶段 #define CXSLog(...) NSLog(__VA_ARGS__) #else // 发布阶段 #define CXSLog (...) #endif iOS中debug调试输出日志,布布扣,bubuko.com

logstash日志收集分析系统elasticsearch&kibana

logstash日志收集分析系统Logstash provides a powerful pipeline for storing, querying, and analyzing your logs. When using Elasticsearch as a backend data store and Kibana as a frontend reporting tool, Logstash acts as the workhorse. It includes an arsenal of

zipkin+elk微服务日志收集分析系统

docker安装elk日志分析系统 在win10上安装docker环境 tip:win7/8 win7.win8 系统 win7.win8 等需要利用 docker toolbox 来安装,国内可以使用阿里云的镜像来下载,下载地址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/ win10 现在 Docker 有专门的 Win10 专业版系统的安装包,需要开启Hyper-V. 程序和功能->启用或关闭Windows

在linux中快速使用docker搭建ELK日志监控分析系统

在linux中使用docker安装ELK日志监控分析系统 网上的教程非常零散或者很多都已经过时了,我这里总结了相比于其他更新的日志系统搭建.并且使用docker镜像,更加简化了安装.在这开始之前先附上我的成功配置截图: linux的安装 linux的安装很简单,但是要使用docker必须安装centos7及以上,不然出现的各种兼容性问题自行百度解决.这里有两种方法: 如果是学生可以购买阿里或者腾讯的linux服务器,简单方便,每个月只要10元钱,其实挺划算的.这是阿里linux的购买地址:htt

nginx日志之错误日志及访问日志及日志分割

一.nginx错误日志 nginx软件会把自身运行的故障信息及用户访问的日志信息记录到指定的日志文件里 一般在nginx.conf配置文件第二行添加:error_log    logs/error.log    error : ↓                  ↓                  ↓ 关键字             日志文件       日志级别 其实如果不添加这行的话,默认就是这样 关于日志级别: 错误日志常见的级别有 :debug | info|notice | war

事务日志初探(二)---简单恢复模式

简述 在简单恢复模式下,日志文件的作用仅仅是保证了SQL Server事务的ACID属性.并不承担具体的恢复数据的角色.正如”简单”这个词的字面意思一样,数据的备份和恢复仅仅是依赖于手动备份和恢复.我们简单介绍下三种恢复模式. 1.完整恢复模式 这种模式会为所有操作都记录日志,当数据文件被破坏时,可以备份尾部事务日志,并用于将数据库还原到给定的时间点.因此OLTP生产系统通常会使用完整的恢复模式. 2.大容量日志恢复模式 这种模式把日志记录量最小化,只为大容量操作记录日志. 3.简单恢复模式 我