gpt4 book ai didi

java - 用于功能日志记录的恒定 UUID(设计)

转载 作者:行者123 更新时间:2023-12-01 09:37:57 24 4
gpt4 key购买 nike

我正在解决有关功能日志记录(非开发人员看到的日志)的问题。一项要求是为每个日志条目添加唯一的 ID。这样产品经理就可以查询该 ID 并获取所有关联的日志条目。(伪)代码示例如下所示:

if (something starts or happens here){
//arguments: container id, service name, message, message uuid
functionalLogService.addLog(container.getId(), this.SERVICE_NAME, "this happened", "124e3314-ffad-4b5d-be76-fc6b0f82aeea");
}

我必须经常这样做,而且我不太喜欢在日志行中硬编码随机 UUID。每个日志语句的 UUID 都不同。一种选择是保持原样,这可行,另一种选择是为每个 UUID 创建常量,这似乎有点过分了。

我的问题:有什么设计或“好的”方法可以做到这一点吗?

编辑

我已经有了使用的想法:

UUID.nameUUIDFromBytes(message.getBytes()).toString();

但是,如果在某个时候我想更改消息,数据库将不再向后兼容。所以这个选项已经被淘汰了。

最佳答案

如果您有唯一的 container.getId() 并且知道此 ID,则可以通过连接 container.getId()this.SERVICE_NAME 创建 UUID 并补充生成的 UUID 中的字符。您输入的所有内容都将具有以 container.getId()this.SERVICE_NAME 开头的唯一 ID。

在日志中,您可能会找到以 container.getId()this.SERVICE_NAME 开头的特定日志条目。

或者

使用 public static final 常量创建类,并使用有意义的名称 (LogEntryConstants.java),并在日志条目中使用此常量。另外,如果可以接受,请在这些常量的值中添加一些可读文本,其中可能包括 this.SERVICE_NAME,使用此文本您可以通过关键字 (this.SERVICE_NAME) 简化搜索在日志中。这有点过分了,但是您可以组织代码并在业务逻辑中摆脱硬编码,将其移动到实用程序类 LogEntryConstants

关于java - 用于功能日志记录的恒定 UUID(设计),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38693573/

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