使用Logback.xml播放2.1和Neo4J WrappingNeoServer错误

前端之家收集整理的这篇文章主要介绍了使用Logback.xml播放2.1和Neo4J WrappingNeoServer错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个嵌入式neo4j服务器,管理控制台在Play 2.0.1应用程序中工作.我最近升级为与DeadBolt兼容的发布候选人,发现应用程序不再运行.

要启动服务器,我在执行以下操作:

  1. graphDb = (GraphDatabaseAPI) new GraphDatabaseFactory()
  2. .newEmbeddedDatabaseBuilder(CONF_DBMeta_LOCATION)
  3. .setConfig(ShellSettings.remote_shell_enabled,"true")
  4. .newGraphDatabase();
  5. ServerConfigurator config;
  6. config = new ServerConfigurator(graphDb);
  7. // let the server endpoint be on a custom port
  8.  
  9. srv = new WrappingNeoServerBootstrapper(graphDb,config);
  10. srv.start();

不幸的是,我得到:

  1. > java.lang.RuntimeException:
  2. > org.neo4j.kernel.lifecycle.LifecycleException: Component
  3. > 'org.neo4j.kernel.logging.LogbackService@4c043845' Failed to
  4. > initialize. Please see attached cause exception.

我已经尝试从添加了neo4j-server的Build.scala中删除slf4j和logback依赖关系,但无济于事.看来,neo4j正在加载错误的logback.xml.此外,如果我将notTransitive()添加到neo4j服务器依赖项,则启动时的logback.xml警告将消失.我想象,neo4j特定的logback.xml嵌入在jar中并导致问题.我看到的一个潜在解决方案是通过代码编写自定义配置,但我不确定如何做到这一点.有什么想法吗?作为参考,我在启动时收到以下错误

  1. > 22:11:05,124 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find
  2. > resource [logback.groovy]
  3. > 22:11:05,125 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find
  4. > resource [logback-test.xml]
  5. > 22:11:05,125 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource
  6. > [logback.xml] at
  7. > [jar:file:/Users/steve/Code/play-2.1-RC1/repository/local/play/play_2.10/2.1-RC1/jars/play_2.10.jar!/logback.xml]
  8. > 22:11:05,126 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml]
  9. > occurs multiple times on the classpath.
  10. > 22:11:05,126 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml]
  11. > occurs at
  12. > [jar:file:/Users/steve/Code/play-2.1-RC1/framework/../repository/cache/org.neo4j.app/neo4j-server/jars/neo4j-server-1.9-SNAPSHOT.jar!/logback.xml]
  13. > 22:11:05,126 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml]
  14. > occurs at
  15. > [jar:file:/Users/steve/Code/play-2.1-RC1/repository/local/play/play_2.10/2.1-RC1/jars/play_2.10.jar!/logback.xml]
  16. > 22:11:05,139 |-INFO in ch.qos.logback.core.joran.spi.ConfigurationWatchList@733b8bc1 - URL
  17. > [jar:file:/Users/steve/Code/play-2.1-RC1/repository/local/play/play_2.10/2.1-RC1/jars/play_2.10.jar!/logback.xml]
  18. > is not of type file
  19. > 22:11:05,265 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug
  20. > attribute not set
  21. > 22:11:05,614 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate
  22. > appender of type [ch.qos.logback.core.ConsoleAppender]
  23. > 22:11:05,625 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as
  24. > [STDOUT]
  25. > 22:11:05,657 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming
  26. > default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for
  27. > [encoder] property
  28. > 22:11:05,707 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level
  29. > of ROOT logger to ERROR
  30. > 22:11:05,707 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching
  31. > appender named [STDOUT] to Logger[ROOT]
  32. > 22:11:05,707 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of
  33. > configuration.
  34. > 22:11:05,709 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@4a546701 - Registering
  35. > current configuration as safe fallback point

完整例外情况见下文:

  1. > play.api.UnexpectedException: Unexpected exception[RuntimeException:
  2. > org.neo4j.kernel.lifecycle.LifecycleException: Component
  3. > 'org.neo4j.kernel.logging.LogbackService@4c043845' Failed to
  4. > initialize. Please see attached cause exception.] at
  5. > play.core.ReloadableApplication$$anonfun$get$1$$anonfun$1.apply(ApplicationProvider.scala:134)
  6. > ~[play_2.10.jar:2.1-RC1] at
  7. > play.core.ReloadableApplication$$anonfun$get$1$$anonfun$1.apply(ApplicationProvider.scala:101)
  8. > ~[play_2.10.jar:2.1-RC1] at scala.Option.map(Option.scala:145)
  9. > ~[scala-library.jar:na] at
  10. > play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:101)
  11. > ~[play_2.10.jar:2.1-RC1] at
  12. > play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:99)
  13. > ~[play_2.10.jar:2.1-RC1] at
  14. > scala.util.Either$RightProjection.flatMap(Either.scala:523)
  15. > [scala-library.jar:na] Caused by: java.lang.RuntimeException:
  16. > org.neo4j.kernel.lifecycle.LifecycleException: Component
  17. > 'org.neo4j.kernel.logging.LogbackService@4c043845' Failed to
  18. > initialize. Please see attached cause exception. at
  19. > org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:258)
  20. > ~[neo4j-kernel-1.9.M03.jar:na] at
  21. > org.neo4j.kernel.EmbeddedGraphDatabase.<init>(EmbeddedGraphDatabase.java:88)
  22. > ~[neo4j-kernel-1.9.M03.jar:na] at
  23. > org.neo4j.graphdb.factory.GraphDatabaseFactory$1.newDatabase(GraphDatabaseFactory.java:83)
  24. > ~[neo4j-kernel-1.9.M03.jar:1.9.M03] at
  25. > org.neo4j.graphdb.factory.GraphDatabaseBuilder.newGraphDatabase(GraphDatabaseBuilder.java:206)
  26. > ~[neo4j-kernel-1.9.M03.jar:1.9.M03] at
  27. > EmbeddedGraphDB.initializeDatabase(EmbeddedGraphDB.java:70)
  28. > ~[na:na] at
  29. > EmbeddedGraphDB.<init>(EmbeddedGraphDB.java:51)
  30. > ~[na:na] Caused by: org.neo4j.kernel.lifecycle.LifecycleException:
  31. > Component 'org.neo4j.kernel.logging.LogbackService@4c043845' Failed to
  32. > initialize. Please see attached cause exception. at
  33. > org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:471)
  34. > ~[neo4j-kernel-1.9.M03.jar:1.9.M03] at
  35. > org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:62)
  36. > ~[neo4j-kernel-1.9.M03.jar:1.9.M03] at
  37. > org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:96)
  38. > ~[neo4j-kernel-1.9.M03.jar:1.9.M03] at
  39. > org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:245)
  40. > ~[neo4j-kernel-1.9.M03.jar:na] at
  41. > org.neo4j.kernel.EmbeddedGraphDatabase.<init>(EmbeddedGraphDatabase.java:88)
  42. > ~[neo4j-kernel-1.9.M03.jar:na] at
  43. > org.neo4j.graphdb.factory.GraphDatabaseFactory$1.newDatabase(GraphDatabaseFactory.java:83)
  44. > ~[neo4j-kernel-1.9.M03.jar:1.9.M03] Caused by:
  45. > org.neo4j.kernel.lifecycle.LifecycleException: Component
  46. > 'org.neo4j.kernel.logging.LogbackService$1@1955bd61' was successfully
  47. > initialized,but Failed to start. Please see attached cause exception.
  48. > at
  49. > org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:495)
  50. > ~[neo4j-kernel-1.9.M03.jar:1.9.M03] at
  51. > org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:105)
  52. > ~[neo4j-kernel-1.9.M03.jar:1.9.M03] at
  53. > org.neo4j.kernel.logging.LogbackService.init(LogbackService.java:106)
  54. > ~[neo4j-kernel-1.9.M03.jar:1.9.M03] at
  55. > org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:465)
  56. > ~[neo4j-kernel-1.9.M03.jar:1.9.M03] at
  57. > org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:62)
  58. > ~[neo4j-kernel-1.9.M03.jar:1.9.M03] at
  59. > org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:96)
  60. > ~[neo4j-kernel-1.9.M03.jar:1.9.M03] Caused by:
  61. > java.lang.NoSuchMethodError:
  62. > org.codehaus.janino.ClassBodyEvaluator.setImplementedInterfaces([Ljava/lang/Class;)V
  63. > at
  64. > ch.qos.logback.core.joran.conditional.PropertyEvalScriptBuilder.build(PropertyEvalScriptBuilder.java:48)
  65. > ~[logback-core.jar:na] at
  66. > ch.qos.logback.core.joran.conditional.IfAction.begin(IfAction.java:67)
  67. > ~[logback-core.jar:na] at
  68. > ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java:276)
  69. > ~[logback-core.jar:na] at
  70. > ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:148)
  71. > ~[logback-core.jar:na] at
  72. > ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java:130)
  73. > ~[logback-core.jar:na] at
  74. > ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)
  75. > ~[logback-core.jar:na]

EDIT1更多细节

我从play_2.10.jar中删除了logback.xml文件,并且在播放应用程序启动时不再收到来自logback的重复警告.

然后,我尝试将neo4j logback.xml和play2.1 logback.xml的内容放在我的播放项目根目录下的custom-logback.xml中.与Play.application()相同的路径path()也许这是neo4j接收的错误位置?

在检查依赖关系时,我有一个new4j服务器需要一个janino.此外,我没有看到罐子里有任何冲突,但也许我错过了一些事情.这是我从“播放依赖”的依赖关系层次:

https://gist.github.com/4559389

我还尝试将Play2.1维基上列出的默认配置复制到custom-logback.xml中,而不成功:

  1. <configuration>
  2.  
  3. <conversionRule conversionWord="coloredLevel" converterClass="play.api.Logger$ColoredLevel" />
  4.  
  5. <appender name="FILE" class="ch.qos.logback.core.FileAppender">
  6. <file>${application.home}/logs/application.log</file>
  7. <encoder>
  8. <pattern>%date - [%level] - from %logger in %thread %n%message%n%xException%n</pattern>
  9. </encoder>
  10. </appender>
  11.  
  12. <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  13. <encoder>
  14. <pattern>%coloredLevel %logger{15} - %message%n%xException{5}</pattern>
  15. </encoder>
  16. </appender>
  17.  
  18. <logger name="play" level="INFO" />
  19. <logger name="application" level="INFO" />
  20.  
  21. <root level="ERROR">
  22. <appender-ref ref="STDOUT" />
  23. <appender-ref ref="FILE" />
  24. </root>
  25.  
  26. </configuration>

编辑2

肯定似乎是logback依赖关系的一个问题. Neo4j取决于0.9.30,玩依赖于1.0.7看起来.我猜这些版本之间有一个api的变化,当图书馆被加载?janino?它找不到合适的方法.仍然不确定如何在logback.xml中正确指定在运行时选择正确的依赖关系.

图由yed sbt-dependency-graph生成.

关于Neo4j生命周期异常,因为Play 2.1的较新版本的logback与Neo4j不兼容.我碰到这个问题,最后只是把Play的logback覆盖到一个较旧的兼容版本,把它放在我的Build.scala的项目依赖项中:
  1. "ch.qos.logback" % "logback-core" % "1.0.3" force(),// this should override the Play version
  2. "ch.qos.logback" % "logback-classic" % "1.0.3" force(),

为了很好的措施,我还尝试排除通过设置SBT的ivyXML参数被拉入的任何log4j传递依赖关系:

  1. ivyXML :=
  2. <dependencies>
  3. <exclude module="log4j"/>
  4. </dependencies>

这显然是一个脆弱的修复,但至少对于Play 2.1-RC2,它似乎工作.我仍然有问题实际配置Neo4j的日志记录,所以我稍后尝试更新这个答案.

更新:由于我是新的回溯我有一个困难配置它与Play / Neo4j.为了防止Logback发生错误并将其淹没在状态消息中,我需要在我的Play应用程序的conf目录中放入一个名为custom-logback.xml的文件.我认为Neo4j日志记录配置需要这个.矿包含以下内容

  1. <included>
  2. <logger name="eu.mypackage" level="info">
  3. </logger>
  4.  
  5. <logger name="org.neo4j" level="warn">
  6. </logger>
  7.  
  8. <root level="warn">
  9. </root>
  10. </included>

另外在我的conf目录中,我似乎需要一个名为logback.properties的文件(在我的例子中)只包含这一行:

  1. CONSOLE_LEVEL=ERROR

(Logback专家,随时更正任何一个.)

猜你在找的XML相关文章