0

我添加了我的自定义代码如下

public class StatusUpdateHook implements Hook {

    private static final Logger LOGGER = LoggerFactory.getLogger(StatusUpdateHook.class);

    @Override
    public boolean hook(HttpServerExchange exchange, RequestContext context, BsonValue args, BsonDocument confArgs) {
        LOGGER.info("Hook is Called");
        return true;
    }

    @Override
    public boolean doesSupportRequests(RequestContext rc) {
        return true;
    }

}

在我的配置中添加了以下行,

- group: hooks
      interface: org.restheart.metadata.hooks.Hook
      singletons:
        - name: snooper
          class: org.restheart.metadata.hooks.SnooperHook
        - name: statusChecker
          class: com.techmaddy.rh.hook.StatuspdateHook

但是我仍然无法将其打印在日志中,我确定我错过了将钩子添加到集合的部分。我们如何添加它,即我们如何做到这一点“集合元数据属性挂钩允许声明要应用于涉及集合及其文档的请求的挂钩”,来自文档。

4

1 回答 1

1

您已经创建了钩子类,并在配置文件中为其命名。为了让它应用于您的集合,您需要定义hooks集合属性。

PATCH /db/coll { "hooks" : [ { "name": "statusChecker", "args": null } ]}

现在集合coll已经有了hooks带有你的钩子的数组,RESTHeart 将在涉及该集合的请求上调用它。

请注意,默认的日志记录配置,只打印出分类在子包中的消息org.restheart。因此,要么更改配置(定义系统属性logback.configurationFile,请参阅https://logback.qos.ch/manual/configuration.html),要么按如下方式实例化记录器:

private static final Logger LOGGER = LoggerFactory.getLogger("org.restheart.custom.StatuspdateHook");

于 2017-11-07T09:27:13.203 回答