Как хранить каждый запрос в одном файле - PullRequest
0 голосов
/ 23 сентября 2018

Я создаю одну службу без использования базы данных.

Я храню все данные моего запроса в файловой системе.

Но проблема заключается в том, что при каждом запросе он снова и снова создает новый файл, но я хочу поместить все данные запроса в один и тот же файл.

Я разрабатываю сервис с использованием весенней загрузки.

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Вам не нужен весенний загрузчик для этого человека, все, что вам нужно сделать, это написать в буферизованный писатель и добавить в него строку.

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
}
0 голосов
/ 23 сентября 2018

У вас может быть 2 файла:

  1. В этом файле вы добавляете содержимое строки JSON один за другим

  2. В этомВ файл, к которому вы добавляете начальную и конечную позиции, где в файле № 1 вы написали JSON, каждый в своей строке.Здесь вы также можете хранить другие метаданные, такие как идентификатор запроса, дату и т. Д.

Итак, когда вы обрабатываете сохраненные запросы, вы сначала читаете файл № 2, чтобы прочитатьначальная и конечная позиции, а затем вы читаете из файла № 1 с этих позиций .

...