如何将每个请求存储在同一个文件中
How to Store Every request in same file
我正在创建一个 服务 而不使用数据库。
我正在将所有请求数据存储在文件系统中。
但问题出在每个请求上,它一次又一次地创建新文件,但我想将每个请求数据放在同一个文件中。
我正在使用 spring boot.
开发服务
您可以有 2 个文件:
在此文件中,您将 JSON 字符串的内容一个接一个地附加
在这个文件中,您在文件 1 中添加了 JSON 的开始位置和结束位置,每个都在自己的行中。您还可以在此处存储其他元数据,如请求 ID、日期等。
因此,当您处理存储的请求时,您首先读取 2 号文件以读取开始和结束位置,然后从 1 号文件读取 from those positions。
这个人不需要 spring 引导,您需要做的就是写入缓冲写入器并在其中添加一行。
package com.pogs.utilities;
import org.joda.time.DateTime;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Class that implements request aggregation methods.
*
* @author Allan A. Chua
* @version 1.0
* @since August 31, 2018
*/
public class RequestAggregator {
private final static String REQUEST_STORE_PATH = "D:\logs.txt";
//region Private Methods
private void storeToTextFile(String input) {
try {
File file = new File(REQUEST_STORE_PATH);
BufferedWriter fw = new BufferedWriter(new FileWriter(file.getAbsoluteFile(), true));
fw.write(input);
fw.newLine();
fw.flush();
fw.close();
} catch (IOException ex) {
System.out.println("[" + (new DateTime()).toString() + "][Logger is experiencing troubles]");
}
}
//endregion
//region Methods
/**
* Method used for appending request logs inside
* the log aggregation method.
*
* @param input - Message to be logged.
*/
public void appendInfo(String input) {
String log = "[INFO][" + (new DateTime()).toString() + "]";
log += input;
storeToTextFile(log);
System.out.println(log);
}
/**
* Method used for appending error request logs inside
* the log aggregation method.
*
* @param input Message to be logged.
*/
public void appendError(String input) {
String log = "[ERROR][" + (new DateTime()).toString() + "]";
log += input;
storeToTextFile(log);
System.out.println(log);
}
//endregion
}
我正在创建一个 服务 而不使用数据库。
我正在将所有请求数据存储在文件系统中。
但问题出在每个请求上,它一次又一次地创建新文件,但我想将每个请求数据放在同一个文件中。
我正在使用 spring boot.
开发服务您可以有 2 个文件:
在此文件中,您将 JSON 字符串的内容一个接一个地附加
在这个文件中,您在文件 1 中添加了 JSON 的开始位置和结束位置,每个都在自己的行中。您还可以在此处存储其他元数据,如请求 ID、日期等。
因此,当您处理存储的请求时,您首先读取 2 号文件以读取开始和结束位置,然后从 1 号文件读取 from those positions。
这个人不需要 spring 引导,您需要做的就是写入缓冲写入器并在其中添加一行。
package com.pogs.utilities;
import org.joda.time.DateTime;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Class that implements request aggregation methods.
*
* @author Allan A. Chua
* @version 1.0
* @since August 31, 2018
*/
public class RequestAggregator {
private final static String REQUEST_STORE_PATH = "D:\logs.txt";
//region Private Methods
private void storeToTextFile(String input) {
try {
File file = new File(REQUEST_STORE_PATH);
BufferedWriter fw = new BufferedWriter(new FileWriter(file.getAbsoluteFile(), true));
fw.write(input);
fw.newLine();
fw.flush();
fw.close();
} catch (IOException ex) {
System.out.println("[" + (new DateTime()).toString() + "][Logger is experiencing troubles]");
}
}
//endregion
//region Methods
/**
* Method used for appending request logs inside
* the log aggregation method.
*
* @param input - Message to be logged.
*/
public void appendInfo(String input) {
String log = "[INFO][" + (new DateTime()).toString() + "]";
log += input;
storeToTextFile(log);
System.out.println(log);
}
/**
* Method used for appending error request logs inside
* the log aggregation method.
*
* @param input Message to be logged.
*/
public void appendError(String input) {
String log = "[ERROR][" + (new DateTime()).toString() + "]";
log += input;
storeToTextFile(log);
System.out.println(log);
}
//endregion
}