dataWarehouseOss專案總結(二)_讀取日誌資訊寫入kafka
Controller
package com.dataWarehouseOss.controller;
import com.dataWarehouseOss.service.ReadLogService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/**
* @author :LiuShihao
* @date :Created in 2020/9/27 1:38 下午
* @desc :
*/
@Slf4j
@RestController
public class ReadLogController {
@Autowired
ReadLogService logService;
@PostMapping("/readlog")
public String readLog(@RequestParam("file") MultipartFile file) throws IOException {
log.info(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss :"))+"-------------執行補錄日誌資料-------------");
logService.readLog(file);
return "補錄資料成功";
}
}
ServiceImpl
package com.dataWarehouseOss.service.Impl;
import com.dataWarehouseOss.service.ReadLogService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
/**
* @author :LiuShihao
* @date :Created in 2020/9/27 1:40 下午
* @desc :
*/
@Slf4j
@Service
public class ReadLogServerImpl implements ReadLogService {
@Autowired
KafkaTemplate kafkaTemplate;
@Override
public void readLog(MultipartFile multipartFile) throws IOException {
String[] split = multipartFile.getOriginalFilename().split("\\.");
File tempFile = File.createTempFile(split[0] + split[1], ".log");
multipartFile.transferTo(tempFile);
FileInputStream fis = new FileInputStream(tempFile);
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
String line = null;
while ((line = br.readLine()) != null) {
String substring = line.substring(line.indexOf("{"));
System.out.println("傳送日誌資料到kafka:"+substring);
kafkaTemplate.send("hw_data",substring);
}
fis.close();
br.close();
tempFile.deleteOnExit();
System.out.println("結束--------------------------------------");
}
}
總結
通過Postman呼叫http://localhost:8081/readlog
POST方法 ,表單形式 提交檔案到後臺,
建立一個臨時檔案tempFile。
String[] split = multipartFile.getOriginalFilename().split("\\.");
File tempFile = File.createTempFile(split[0] + split[1], ".log");
將MultipartFile轉換成File檔案
multipartFile.transferTo(tempFile);
在獲取BufferedReader
。
FileInputStream fis = new FileInputStream(tempFile);
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
通過br.readLine()
來逐行讀取。擷取字串,傳送kafka。
相關文章
- Logstash讀取Kafka資料寫入HDFS詳解Kafka
- 用 logstash 從 kafka 讀取資料寫入 Elasticsearch(qbit)KafkaElasticsearch
- Java實時讀取日誌檔案Java
- Kafka 入門(二)--資料日誌、副本機制和消費策略Kafka
- mysql 二進位制日誌總結MySql
- 如何在專案中記錄日誌資訊?
- zaq寫入日誌
- 專案日誌
- C#讀寫檔案總結C#
- rsyslog日誌總結
- Flink 1.9 實戰:使用 SQL 讀取 Kafka 並寫入 MySQLKafkaMySql
- python檔案建立、讀取和寫入Python
- 如何讀取和寫入JSON檔案JSON
- csv檔案的寫入和讀取
- Golang 快速讀取處理大日誌檔案工具Golang
- 讀取檔案流並寫入檔案流
- Laravel日誌檔案寫入失敗(permission denied)Laravel
- 利用flink從kafka接收訊息,統計結果寫入mysql,訊息寫入hiveKafkaMySqlHive
- MySQL的日誌總結MySql
- 《從0到1學習Flink》—— Flink 讀取 Kafka 資料批量寫入到 MySQLKafkaMySql
- [問題]多個檔案寫入日誌報錯
- 大資料開發過程中Kafka日誌結構解析大資料Kafka
- SpringBoot專案整合日誌Spring Boot
- spring boot(二)配置資訊的讀取Spring Boot
- [Mysql]日誌刷盤總結MySql
- java專案日誌配置檔案Java
- logback.xml日誌寫入資料庫改造,重寫原始碼手工讀取yml引數作為資料來源引數的方法...XML資料庫原始碼
- 分析Oracle資料庫日誌檔案(二)DOOracle資料庫
- mysql關於二進位制日誌binary log的總結MySql
- 08 常用:寫入 讀取檔案格式為:alex|123
- 使用Kafka做日誌收集Kafka
- 日誌總結 - 2018-05-29
- ELK監控nginx日誌總結Nginx
- Linux檢視日誌檔案寫入速度的4種方法Linux
- 【Vue專案總結】後臺管理專案總結Vue
- JavaScript 寫入與讀取cookieJavaScriptCookie
- BBS專案專案總結
- 【Java EE】從零開始寫專案【總結】Java