如何解决akka http服务器端的自定义日志消息
我无法在使用akka-http的应用程序上记录自定义消息。这是代码的快照:
下面的类是我定义Route实例的类,然后在绑定时使用它。如果发现结果,它将与Amazon DynamoDB交互,将结果转换为TrialObject实例并返回。
public class TestRoute extends AllDirectives {
private DynamoDbAsyncclient _dynamoDbClient;
private String _tableName;
public TestRoute(DynamoDbAsyncclient dynamoClient,String tableName) {
_dynamoDbClient = dynamoClient;
_tableName = tableName;
}
public Route createRoute() {
return get(() -> pathPrefix("item",() ->
path(PathMatchers.longSegment(),this::getItemRoute)));
}
private Route getItemRoute(Long itemId) {
Map<String,AttributeValue> key = new HashMap<>();
key.put("myid",AttributeValue.builder().n(String.valueOf(itemId)).build());
GetItemRequest getRequest = GetItemRequest.builder()
.tableName(_tableName)
.key(key)
.build();
CompletableFuture<GetItemResponse> response = _dynamoDbClient.getItem(getRequest);
CompletableFuture<Optional<TrialObject>> object = response.thenApply(getResponse -> {
// TRYING TO LOG HERE
// log.info("the result is {}",getResponse.toString());
if (getResponse.hasItem()) {
String name = getResponse.item().get("name").s();
long myId = Long.parseLong(getResponse.item().get("myid").n());
return Optional.of(new TrialObject(name,myId));
} else {
return Optional.empty();
}
});
return onSuccess(object,trialObjectOpt ->
trialObjectOpt.map(trialObject -> completeOK(trialObject,Jackson.marshaller()))
.orElseGet(() -> complete(StatusCodes.NOT_FOUND,"Not Found")));
}
}
我无法在getItemRoute方法中获得对记录器对象的引用(请参见注释行)。因此,我无法记录自定义消息。
问题: 1-那时是否可以引用记录器? 2-在CompletableFuture中登录akka-http的建议方法是什么?
谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。