java Neo4j事件处理插件+日志

lndjwyie  于 10个月前  发布在  Java
关注(0)|答案(2)|浏览(77)

我是新的neo4j,我想开发一个插件,注册数据库中的日志更改,现在我只想日志事务数据。我使用maven和java 17来构建jar,使用Docker来部署neo4j和最新的镜像(5.10.0)。
插件看起来像这样:
类来处理日志记录事件:

public class Neo4jTriggersPlugin implements TransactionEventListener<Object> {
    private final Log log;

    public Neo4jTriggersPlugin(DatabaseManagementService dbms, LogService lgsvc) {
        this.log = lgsvc.getUserLog(Neo4jTriggersPlugin.class);
    }

    @Override
    public Object beforeCommit(TransactionData transactionData, Transaction transaction, GraphDatabaseService graphDatabaseService) throws Exception {
        return null;
    }

    @Override
    public void afterCommit(TransactionData transactionData, Object o, GraphDatabaseService graphDatabaseService) {
        log.info("Transaction committed" + transactionData.toString());
    }

    @Override
    public void afterRollback(TransactionData transactionData, Object o, GraphDatabaseService graphDatabaseService) {
    }

个字符
我找到了示例here。我浏览了neo4j关于日志,过程,扩展等的文档。
编译并构建上述插件的.jar后,将其复制到var/lib/neo4j/plugins/目录并重新启动容器。然后我运行一些密码查询,我没有看到任何信息写在日志中。我还将/logs和/data/database挂载为卷。
如果有人能解释这是如何正确地完成的,或者给我指出一个好的信息来源,我将不胜感激。- 谢谢-谢谢

ev7lccsx

ev7lccsx1#

您需要从Dependencies获取日志记录器,您可以在此处查看示例
https://github.com/ikwattro/neo4j-transaction-event-listener-extension/blob/master/src/main/java/com/ikwattro/neo4j/tx/MyExtensionFactory.java#L31

slhcrj9b

slhcrj9b2#

作为一种解决方法,您的插件可以调用扩展的APOC apoc.log过程(例如,apoc.log.info)来登录到服务器上的neo4j.log
另外,您可能希望使用APOC's trigger procedures代替编写自己的commit触发插件。

相关问题