gpt4 book ai didi

java - 如何将每个请求记录到 csv 文件

转载 作者:行者123 更新时间:2023-12-02 13:14:10 24 4
gpt4 key购买 nike

我正在开发 REST API,我想将所有调用写入 csv 文件。所以我使用opencsv库和我编写了以下代码:

   CSVWriter writer;

Map<String, Object> resultMap = new HashMap<String, Object>();

@RequestMapping(value="/data",produces={MediaType.APPLICATION_JSON_VALUE},method=RequestMethod.GET)
public ResponseEntity<Map<String, Object>> getdata(@RequestParam("id")int id,@RequestParam("user")String user) throws IOException{
String[] log = new String[1];
log[0]=id+","+"+user+","+new Timestamp(System.currentTimeMillis())+",";
writer.writeNext(log);

writer.flushQuietly();
//....rest code here

return new ResponseEntity<Map<String, Object>>(resultMap,HttpStatus.OK);

}

但这只打印了一些,并没有打印所有对 csv 的请求。为什么会发生这种情况?如有任何帮助,我们将不胜感激。

最佳答案

我建议的第一件事就是用 FileWriter 替换 CSVWriter,看看您是否有同样的问题。这应该不是问题,因为您并不是真正记录为 csv 文件,而是记录为其中有一列包含逗号的 csv 文件。

您的服务是多线程的吗?如果是这样,请更改您的代码,以便 csv 日志记录部分在同步块(synchronized block)中完成:

        synchronize(this) {
String[] log = new String[3];

log[0] = id;
log[1] = user;
log[2] = new Timestamp(System.currentTimeMillis());

writer.writeNext(log);
writer.flushQuietly();
}

原因是我想知道是否存在并发问题,这样一次只能有一个线程进行日志记录。

关于java - 如何将每个请求记录到 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43840885/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com