记录时如何屏蔽grpc响应中的某些字段
How to mask out some field in grpc response when logging
我想在记录时屏蔽一些字段。
有什么好的屏蔽方法吗?
消息发送给客户端后。
我试图在记录之前屏蔽掉一些字段
你如何屏蔽字段?
--served to client
message {
id : "user",
phoneNumber : "12341234"
}
--logged response
message {
id : "user",
phoneNumber : "12******"
}
我认为没有办法像您提到的那样更改数据,但是有一种方法可以隐藏您不想在日志中打印的字段(出于安全原因我认为是这样)。你这样做的方式是 FieldMask
.
所以为了这个例子,我冒昧地向架构中添加了另一个字段,我假设你有:
message User {
string id = 1;
string name = 2;
string phone_number = 3;
}
现在假设我不想显示 phone 用户数,我可以使用 FieldMask
只保留 id
和 name
.所以首先我们构建一个FieldMask
(你需要添加这个dependency来访问FieldMaskUtil
):
public static final FieldMask WITH_ID_AND_NAME =
FieldMaskUtil.fromFieldNumbers(User.class,
User.ID_FIELD_NUMBER,
User.NAME_FIELD_NUMBER);
那么我能做的就是 merge
这个 FieldMask
与一个现有的对象:
private static void log(User user, FieldMask fieldMask) {
User.Builder userWithMaskedFields = User.newBuilder();
FieldMaskUtil.merge(fieldMask, user, userWithMaskedFields);
System.out.println(userWithMaskedFields);
}
public static void main(String[] args) {
User user = User.newBuilder()
.setId("user")
.setName("a name")
.setPhoneNumber("12341234")
.build();
System.out.println("---Without FieldMask---");
System.out.println(user);
System.out.println("---With FieldMask---");
log(user, WITH_ID_AND_NAME);
}
这将给我以下输出:
---Without FieldMask---
id: "user"
name: "a name"
phone_number: "12341234"
---With FieldMask---
id: "user"
name: "a name"
希望对您有所帮助,如果您需要更多详细信息,请告诉我,我可以更新我的答案。
我想在记录时屏蔽一些字段。 有什么好的屏蔽方法吗?
消息发送给客户端后。 我试图在记录之前屏蔽掉一些字段
你如何屏蔽字段?
--served to client
message {
id : "user",
phoneNumber : "12341234"
}
--logged response
message {
id : "user",
phoneNumber : "12******"
}
我认为没有办法像您提到的那样更改数据,但是有一种方法可以隐藏您不想在日志中打印的字段(出于安全原因我认为是这样)。你这样做的方式是 FieldMask
.
所以为了这个例子,我冒昧地向架构中添加了另一个字段,我假设你有:
message User {
string id = 1;
string name = 2;
string phone_number = 3;
}
现在假设我不想显示 phone 用户数,我可以使用 FieldMask
只保留 id
和 name
.所以首先我们构建一个FieldMask
(你需要添加这个dependency来访问FieldMaskUtil
):
public static final FieldMask WITH_ID_AND_NAME =
FieldMaskUtil.fromFieldNumbers(User.class,
User.ID_FIELD_NUMBER,
User.NAME_FIELD_NUMBER);
那么我能做的就是 merge
这个 FieldMask
与一个现有的对象:
private static void log(User user, FieldMask fieldMask) {
User.Builder userWithMaskedFields = User.newBuilder();
FieldMaskUtil.merge(fieldMask, user, userWithMaskedFields);
System.out.println(userWithMaskedFields);
}
public static void main(String[] args) {
User user = User.newBuilder()
.setId("user")
.setName("a name")
.setPhoneNumber("12341234")
.build();
System.out.println("---Without FieldMask---");
System.out.println(user);
System.out.println("---With FieldMask---");
log(user, WITH_ID_AND_NAME);
}
这将给我以下输出:
---Without FieldMask---
id: "user"
name: "a name"
phone_number: "12341234"
---With FieldMask---
id: "user"
name: "a name"
希望对您有所帮助,如果您需要更多详细信息,请告诉我,我可以更新我的答案。