0

有一个事务事件处理程序来记录通过嵌入式 API 所做的更改。

import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.event.TransactionData;
import org.neo4j.graphdb.event.TransactionEventHandler;
import org.neo4j.kernel.impl.util.StringLogger;
import org.neo4j.server.logging.Logger;
import java.util.logging.Level;


public class WarehouseTransactionEventHandler  implements TransactionEventHandler<String> {
private static Logger log = Logger
        .getLogger(WarehouseTransactionEventHandler.class);



  public void afterCommit(TransactionData data, String state) {

      Iterable<Node> createdNodes = data.createdNodes();
      for(Node n: createdNodes) {
        log.info("AfterCommit ########: created node:" + n.getId());
        log.log(Level.ALL,"AfterCommit ########: created node:" + n.getId());
      }



  }


  public void afterRollback(TransactionData data, String state) {
    // TODO Auto-generated method stub

  }

  public String beforeCommit(TransactionData data) throws Exception {
      Iterable<Node> createdNodes = data.createdNodes();
      for(Node n: createdNodes) {
          log.info("BeforeCommit ######: created node:" + n.getId());
          log.log(Level.ALL,"BeforeCommit ######: created node:" + n.getId());
      }

      return null;
  }


}

然后我将它注册到我的代码中

GraphDatabaseService graphDb = new EmbeddedGraphDatabase(DB_PATH)
graphDb.registerTransactionEventHandler(new WarehouseTransactionEventHandler())
// do stuff
graphDb.shutdown();

所以当我运行我的代码时,它似乎正在工作

INFO: AfterCommit ########: created node:14
Jun 26, 2013 12:24:22 PM org.neo4j.server.logging.Logger log
INFO: AfterCommit ########: created node:15
Jun 26, 2013 12:24:22 PM org.neo4j.server.logging.Logger log
INFO: AfterCommit ########: created node:17
Jun 26, 2013 12:24:22 PM org.neo4j.server.logging.Logger log
INFO: AfterCommit ########: created node:16
Jun 26, 2013 12:24:22 PM org.neo4j.server.logging.Logger log
INFO: AfterCommit ########: created node:19
Jun 26, 2013 12:24:22 PM org.neo4j.server.logging.Logger log
INFO: AfterCommit ########: created node:18
Jun 26, 2013 12:24:22 PM org.neo4j.server.logging.Logger log
INFO: AfterCommit ########: created node:21
Jun 26, 2013 12:24:22 PM org.neo4j.server.logging.Logger log
INFO: AfterCommit ########: created node:20
Jun 26, 2013 12:24:22 PM org.neo4j.server.logging.Logger log
INFO: AfterCommit ########: created node:22

但是,我浏览了日志,找不到任何这些 AfterCommit 消息。我的 log.properties 没有改变,除了设置java.util.logging.FileHandler.limit=10000000

有什么想法吗?谢谢!

4

1 回答 1

1

您是否尝试过使用log4j,它适用于我。

初始化logger应用程序的开头@,它会在任何你想要的地方记录你的消息.. 像这样:

static {
    try {
        String logFileName = "neo4j.log";
        RollingFileAppender fa = new RollingFileAppender();
        fa.setName("NEO4JLOGGER");
        fa.setFile(logFileName);
        fa.setLayout(new PatternLayout(
                "[%d{dd.MM.yyyy HH:mm:ss.SSS}]  %5p %c{1}:%L - %m%n"));
        fa.setAppend(true);
        fa.activateOptions();
        Logger.getLogger("CLASSES NEEDED TO BE LOGGED").setLevel(Level.ALL);
        Logger.getLogger("CLASSES NEEDED TO BE LOGGED").addAppender(fa);

    } catch (Exception ex) {
        logger.error("Intialize Logger :: Failed...  \n   ", ex);
    }
}
于 2013-06-27T07:19:51.553 回答