我试图将日志记录添加到应用程序中以进行协作,以便将用户的操作(如聊天消息和UI单击)记录到本地文本文件中。稍后,我将同步来自不同用户(使用不同计算机)的日志文本文件,以使日志按时间戳按时间顺序排列。我想知道如何记录时间戳以避免依赖系统时钟,因为这可能会导致日志文件同步不准确。
我当前正在使用java Instant类(导入java.time.Instant;),但是我不确定这是否可行。
String timestamp = Instant.now().toString();
try {
BufferedWriter writer = new BufferedWriter(new FileWriter("actionLogs.txt", true));
writer.write("\n" + timestamp + "\t" + username + "\t" + chatContents);
writer.close();
} catch (IOException ex) {
System.out.println("caught an IOException");
ex.printStackTrace(System.out);
}
感谢您的建议!
答案 0 :(得分:0)
瞬间是某个时间点;这意味着它没有绑定到任何本地系统时钟。 Instant
类几乎是行之有效的方式。
通常以UTC(通用协调时间)表示。 UTC设计为所有观察者都相同。
当然,系统计时器用作时间源,因此严格来说,它取决于本地计算机上的系统时钟,除非您从时间服务器获取时间,但是对于日志记录,我不建议那个。
答案 1 :(得分:0)
好吧,将其绑定到特定时区,然后将其设置为timemillis,例如:
String text = String.valueOf(LocalDateTime.now().atZone(ZoneOffset.UTC).toInstant().toEpochMilli());
System.out.println(text);