2015-02-06 88 views
0

我正在嘗試在GAE上使用Berkely DB,除了日誌記錄以外,一切正常。這裏是代碼片段GAE上的berkeley DB

EnvironmentConfig envConfig = new EnvironmentConfig(); 
     envConfig.setAllowCreate(allowCreateNew); 
     envConfig.setConfigParam(EnvironmentConfig.FILE_LOGGING_LEVEL, "OFF"); 
     envConfig.setConfigParam(EnvironmentConfig.CONSOLE_LOGGING_LEVEL, "OFF"); 
     envConfig.setLoggingHandler(null); 
     envConfig.setReadOnly(isReadOnly); 
     envConfig.setTransactional(false); 
     if (cacheSize != null) 
      envConfig.setCacheSize(cacheSize); 
     env = new Environment(dbPath, envConfig); 

可以看出我有殘疾記錄和我的logging.properties在GAE上的文件是

.level = WARNING 
handlers = java.util.logging.ConsoleHandler 
java.util.logging.ConsoleHandler.level=OFF 
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter 

# Set the default logging level for ORM, specifically, to WARNING 
DataNucleus.JDO.level=WARNING 
DataNucleus.Persistence.level=WARNING 
DataNucleus.Cache.level=WARNING 
DataNucleus.MetaData.level=WARNING 
DataNucleus.General.level=WARNING 
DataNucleus.Utility.level=WARNING 
DataNucleus.Transaction.level=WARNING 
DataNucleus.Datastore.level=WARNING 
DataNucleus.ClassLoading.level=WARNING 
DataNucleus.Plugin.level=WARNING 
DataNucleus.ValueGeneration.level=WARNING 
DataNucleus.Enhancer.level=WARNING 
DataNucleus.SchemaTool.level=WARNING 
java.sql.level=WARNING 

我也跟着從計算器別人給的所有指針,但仍然我m越來越

java.lang.NoClassDefFoundError: java.util.logging.ConsoleHandler is a restricted class. Please see the Google App Engine developer's guide for more details. 
    at 

    com.google.appengine.tools.development.agent.runtime.Runtime.reject(Runtime.java:51) 
     at com.sleepycat.je.utilint.ConsoleRedirectHandler.<init>(ConsoleRedirectHandler.java:26) 
     at com.sleepycat.je.utilint.LoggerUtils.getLogger(LoggerUtils.java:198) 
     at com.sleepycat.je.dbi.StartupTracker.<init>(StartupTracker.java:151) 
     at com.sleepycat.je.dbi.EnvironmentImpl.<init>(EnvironmentImpl.java:437) 
     at com.sleepycat.je.dbi.EnvironmentImpl.<init>(EnvironmentImpl.java:410) 
     at com.sleepycat.je.dbi.DbEnvPool.getEnvironment(DbEnvPool.java:178) 
     at com.sleepycat.je.Environment.makeEnvironmentImpl(Environment.java:251) 
     at com.sleepycat.je.Environment.<init>(Environment.java:232) 
     at com.sleepycat.je.Environment.<init>(Environment.java:176) 

有關如何禁用從伯克利DB日誌記錄任何指針將不勝感激!

回答

1

看起來像com.sleepycat.je.utilint.LoggerUtils .getLogger方法總是試圖在根記錄器上安裝處理程序(如果它們不存在)。特別是要安裝:

  1. java.util.logging.ConsoleHandler
  2. com.sleepycat.je.utilint.ConsoleRedirectHandler
  3. com.sleepycat.je.utilint.FileRedirectHandler
  4. com.sleepycat .je.utilint.ConfiguredRedirectHandler

更改日誌記錄配置不會阻止代碼嘗試執行此操作。

看來應該修補com.sleepycat.je.utilint.LoggerUtils來處理addHandlers和NoClassDefFoundError引發的SecurityException,以便擴展受限類的類。

+0

是的,我確實得到了昏昏欲睡的貓的源代碼,然後將所有的記錄器從它中刪除,但跳過後,我跑到db文件大小的問題......所以放棄使用sleepycat。 – user1795667 2015-02-07 14:18:41