知识库

如何将参数值记录到 query.log 文件中

Neo4j 3.0 引入了将查询参数的值记录到 log/query.log 文件的功能。控制此功能的设置位于 conf/neo4j.conf 文件中。要启用带参数的查询日志记录,首先必须通过 conf/neo4j.conf 参数启用查询日志记录

dbms.logs.query.enabled=true

其次,要启用参数日志记录,应设置

dbms.logs.query.parameter_logging_enabled=true
默认情况下,dbms.logs.query.parameter_logging_enabled 设置为 true

一旦定义/启用了这两个设置(并重新启动 Neo4j 以应用更改),当使用参数提交 Cypher 语句时,参数值将显示在该行的末尾。

例如,提交

{
  "statements" : [ {
    "statement" : "CREATE (n) RETURN id(n)"
  }, {
    "statement" : "CREATE (n {props}) RETURN n",
    "parameters" : {
      "props" : {
        "name" : "My Node"
      }
    }
  } ]
}

将生成以下日志条目

2016-04-29 18:03:31.679+0000 INFO  86 ms: server-session        http    192.168.1.220   /db/data/transaction - CREATE (n {props}) RETURN n - {props: {name: My Node}}

其中末尾的 {props: {name: My Node}} 表示传递的参数值。

如果您将 dbms.logs.query.parameter_logging_enabled 设置为 false,则上面那行将显示为

2016-04-29 18:02:23.868+0000 INFO  2 ms: server-session http    192.168.1.220   /db/data/transaction - CREATE (n {props}) RETURN n