2015-02-06 2 views
0

Я пытаюсь использовать Berkely DB на GAE, и все работает отлично, кроме ведения журнала. Вот фрагмент кодаberkeley DB на GAE

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 

я выполнил все указатели, данные другим из StackOverflow, но все-таки я м получение

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) 

Любые указатели о том, как отключить ведение журнала из базы данных Berkley, были бы высоко оценены!

ответ

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 должен быть исправлен, чтобы иметь дело с SecurityException, созданным addHandlers и NoClassDefFoundError для классов, которые расширяют ограниченные классы.

+0

Да, я получил источник для сонной кошки и удалил из него всех регистраторов, но после того, как я прыгнул в этот обруч, я столкнулся с проблемами размера файла db ... поэтому отказался от использования sleepycat. – user1795667

Смежные вопросы