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。
相關文章
- 工作日誌總結二
- Java實時讀取日誌檔案Java
- mysql 二進位制日誌總結MySql
- Logstash讀取Kafka資料寫入HDFS詳解Kafka
- 利用外部表讀取告警日誌檔案
- 如何在專案中記錄日誌資訊?
- 讀寫日誌函式函式
- zaq寫入日誌
- Linux系統檢視日誌資訊總結Linux
- 用 logstash 從 kafka 讀取資料寫入 Elasticsearch(qbit)KafkaElasticsearch
- 網際網路金融專案——工作日誌(六)玩轉檔案讀取
- C#讀寫檔案總結C#
- C++檔案讀寫總結C++
- 專案日誌
- SQL Server日誌檔案總結及日誌滿的處理SQLServer
- csv檔案的寫入和讀取
- Flink 1.9 實戰:使用 SQL 讀取 Kafka 並寫入 MySQLKafkaMySql
- Kafka 入門(二)--資料日誌、副本機制和消費策略Kafka
- 讀取檔案流並寫入檔案流
- [zt] SQL Server日誌檔案總結及日誌滿的處理SQLServer
- Golang 快速讀取處理大日誌檔案工具Golang
- Laravel日誌檔案寫入失敗(permission denied)Laravel
- dbms_system.ksdwrt:向告警日誌檔案寫指定資訊
- rsyslog日誌總結
- MySQL的日誌總結MySql
- python檔案建立、讀取和寫入Python
- 如何讀取和寫入JSON檔案JSON
- Python之檔案讀取和寫入Python
- python讀取並寫入mat檔案Python
- IO流-檔案的寫入和讀取
- 【MATLAB】讀取和寫入文字檔案Matlab
- sql server日誌檔案總結及日誌滿的處理辦法SQLServer
- [問題]多個檔案寫入日誌報錯
- Javascript寫入txt和讀取txt檔案示例JavaScript
- 工作日誌總結一
- [Mysql]日誌刷盤總結MySql
- java專案日誌配置檔案Java
- 使用Kafka做日誌收集Kafka