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 (将#修改为@)