TP5日志Kafka接收Java正则解析

该项目利用Kafka+Flume采集TP5日志数据,通过正则表达式对日志进行动态分割和筛选,提取所需信息。内容涵盖了正则表达式的初级入门,介绍了如何筛选包含特定字符串的中括号内容、以中括号结尾的前导字符串,以及如何排除某些字符串和筛选IP地址。同时,提到了Java代码的实现和调用结果。
摘要由CSDN通过智能技术生成

项目需要对企业的业务访问流量进行大数据分析,由于使用Kafka+flume采集数据,接收到的数据是单条的所以需要组装切割再筛选所需要的数据。

正则初级入门

正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。正则表达式是繁琐的,但它是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。只要认真阅读本教程,加上应用的时候进行一定的参考,掌握正则表达式不是问题。

推荐初入门的朋友看看:https://www.runoob.com/regexp/regexp-tutorial.html

TP5日志动态分割

通过观察TP5的日志是很有规律的,每次请求的结尾都有横线分隔,所以可以一个分割线接收完整的日志片段,如:

--------------------------------------------------------------- #分隔线
[ 2019-05-27T10:56:02+08:00 ] 192.168.2.243 GET /Ticket2018/index/index/index.html
[ sql ] [ DB ] CONNECT:[ UseTime:0.011552s ] mysql:host=localhost;port=3306;dbname=tptick;charset=utf8
[ sql ] [ SQL ] S
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1,SDK简介 本SDK是基于ThinkPHP开发类库扩展,因此只能在ThinkPHP平台下使用(ThinkPHP版本要求2.0以上)。DEMO中用到了控制器分层,因此运行DEMO需使用ThinkPHP3.1.2版本。 2,目前支持的平台 目前可用登录平台为:腾讯QQ,腾讯微博,新浪微博,网易微博,人人网,360,豆瓣,Github,Google,MSN,点点,百度,开心网,搜狐。 3,包含的文件 ThinkSDK/ThinkOauth.class.php SDK基类,主要用于Oauth的认证,所有平台的SDK均需要继承此类 ThinkSDK/sdk/DiandianSDK.class.php (点点SDK) ThinkSDK/sdk/DoubanSDK.class.php (豆瓣SDK) ThinkSDK/sdk/GithubSDK.class.php (Github SDK) ThinkSDK/sdk/GoogleSDK.class.php (Google SDK) ThinkSDK/sdk/MsnSDK.class.php (MSN SDK) ThinkSDK/sdk/QqSDK.class.php (腾讯QQ SDK) ThinkSDK/sdk/RenrenSDK.class.php (人人网SDK) ThinkSDK/sdk/SinaSDK.class.php (新浪微博SDK) ThinkSDK/sdk/T163SDK.class.php (网易微博SDK) ThinkSDK/sdk/TencentSDK.class.php (腾讯微博SDK) ThinkSDK/sdk/X360SDK.class.php (360 SDK) ThinkSDK/sdk/BaiduSDK.class.php (百度SDK) ThinkSDK/sdk/KaixinSDK.class.php (开心网SDK) ThinkSDK/sdk/SohuSDK.class.php (搜狐SDK) 4,配置格式 SDK的配置格式如下(可参考DEMO中的配置) //将一下(TYPE)换成你对应的SDK类型 'THINK_SDK_(TYPE)' => array( 'APP_KEY' => '', //应用注册成功后分配的 APP ID 'APP_SECRET' => '', //应用注册成功后分配的KEY 'CALLBACK' => '', //注册应用填写的callback ) 5,接入登录方法 添加ThinkPHP扩展,将整个ThinkSDK目录放入到ThinkPHP的扩展目录下~Extend/Library/ORG/~。 添加SDK配置,按以上配置格式在项目配置中添加对应的SDK配置。(可参考DEMO中的配置文件) 跳转到授权页面,导入SDK基类import("ORG.ThinkSDK.ThinkOauth"),获取SDK实例$sdk=ThinkOauth::getInstance($type),跳转到授权页面redirect($sdk->getRequestCodeURL())。(可参考DEMO中的Index/login方法) 获取access_token,在授权成功的回调页面中,调用$sdk->getAccessToken($code, $extend)方法来获取access_token。(可参考DEMO中的Index/callback方法) 6,调用API方法 成功获取到access_token之后就可以调用相应平台的API了,调用方法比较简单,只需要调用$sdk->call($api, $param, $method)方法就可以了,其中:$api为接口名称,$param为接口参数(格式:name1=value1&name2=value2), $method为请求方法(GET或POST)。 例如: import("ORG.ThinkSDK.ThinkOauth"); //导入SDK基类 $qq = ThinkOauth::getInstance('qq', $token); //实例化腾讯QQ开放平台对象 $token 参数为授权成功后获取到的 $token $data = $qq->call('user/get_user_info'); //调用接口
Java中使用Kafka可以通过KafkaJava客户端库来实现。以下是使用Java编写Kafka的基本步骤: 1. 引入依赖:首先,在项目的构建文件(比如Maven的pom.xml)中添加Kafka的依赖,例如: ```xml <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>2.8.0</version> </dependency> ``` 2. 创建Producer:使用Kafka的Producer API来创建一个消息生产者。可以通过配置Producer的属性,比如设置Kafka集群的地址、消息序列化方式等,然后使用createProducer()方法创建实例。 3. 发送消息:通过调用send()方法将消息发送到指定的主题(topic)。消息可以是单个键值对(ProducerRecord)或多个键值对的集合(ProducerRecords)。 4. 创建Consumer:使用Kafka的Consumer API来创建一个消息消费者。同样地,可以通过配置Consumer的属性,比如设置消费者组ID、自动提交偏移量等,然后使用createConsumer()方法创建实例。 5. 订阅主题:通过调用subscribe()方法订阅一个或多个主题。可以使用正则表达式来匹配多个主题。 6. 接收消息:使用poll()方法从Kafka集群拉取消息。可以设置拉取超时时间来控制poll()方法的阻塞时间。收到的消息可以遍历并进行处理。 7. 提交偏移量:消费者可以选择手动或自动提交偏移量。手动提交可以通过调用commitAsync()或commitSync()方法来完成。 8. 关闭连接:在完成操作后,记得关闭生产者和消费者的连接,以释放资源。可以使用close()方法来关闭。 总结而言,Java中使用Kafka的步骤包括引入依赖,创建生产者发送消息,创建消费者订阅主题接收消息,并最终关闭连接。这些步骤可以通过KafkaJava客户端库轻松实现,为构建高吞吐量、可扩展的消息处理系统提供支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值