My use case is adding global service.id field along side with builtin service.name via StructuredLoggingJsonMembersCustomizer, Application.current() will be available after some point, unexpected "service.id":null is appended before that point.

public class ServiceIdStructuredLoggingJsonMembersCustomizer implements StructuredLoggingJsonMembersCustomizer<String> {

    @Override
    public void customize(JsonWriter.Members<String> members) {
        members.add("service.id", () -> Application.current().map(Application::getInstanceId).orElse(null));
    }
}

Comment From: wilkinsona

You can use whenNotNull to indicate that you want a member to only be included when it has a non-null value:

public class ServiceIdStructuredLoggingJsonMembersCustomizer implements StructuredLoggingJsonMembersCustomizer<String> {

    @Override
    public void customize(JsonWriter.Members<String> members) {
        members.add("service.id", () -> Application.current().map(Application::getInstanceId).orElse(null))
            .whenNotNull();
    }

}