微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

akka http服务器端的自定义日志消息

如何解决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 举报,一经查实,本站将立刻删除。