2013-06-26 2 views
0

Имейте обработчик события транзакции, чтобы выполнить регистрацию изменений, внесенных с помощью встроенного API.neo4j logger не собирается в файл

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

Любые мысли? Благодаря!

ответ

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); 
    } 
}