Uploaded image for project: 'logback'
  1. logback
  2. LOGBACK-372

Groovy-config fails without outside code noticing

    Details

    • Type: Bug
    • Status: Open
    • Priority: Minor
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: logback-classic
    • Labels:
      None
    • Environment:

      na

      Description

      [As reported on the user-list, where I was requested to make a bug report]

      This groovy-file ...:

      import ch.qos.logback.classic.PatternLayout
      import ch.qos.logback.core.ConsoleAppender
      import ch.qos.logback.core.encoder.LayoutWrappingEncoder

      appender("STDOUT", ConsoleAppender) {
      encoder(LayoutWrappingEncoder) {
      layout(PatternLayout) {
      pattern = "%d

      {HH:mm:ss.SSS}

      [%thread] %-5level %logger

      {55}

      .%M.%L - %msg%n"
      }
      }
      }

      root(ALL, ["STDOUT"])

      ... apparently crashes the configuration as such:

      Failed to instantiate [ch.qos.logback.classic.LoggerContext]
      Reported exception:
      groovy.lang.MissingPropertyException: No such property: ALL for class: Script1
      at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:50)
      at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:49)
      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:231)
      at Script1.run(Script1.groovy:13)
      at Script1$run.call(Unknown Source)
      at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
      at ch.qos.logback.classic.gaffer.GafferConfigurator.run(GafferConfigurator.groovy:59)
      at ch.qos.logback.classic.gaffer.GafferConfigurator$run.callCurrent(Unknown Source)
      at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:46)
      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)
      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
      at ch.qos.logback.classic.gaffer.GafferConfigurator.run(GafferConfigurator.groovy:37)
      at ch.qos.logback.classic.gaffer.GafferUtil.runGafferConfiguratorOn(GafferUtil.java:44)
      at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:67)
      at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:150)
      at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:85)
      at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55)
      at org.slf4j.LoggerFactory.bind(LoggerFactory.java:128)
      at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:108)
      at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:279)
      at XYZ.doLogConfig(XYZ.java:40)
      at XYZ.main(XYZ:169)

      The problem is obviously, as the error message states, the not-defined property "ALL".
      The problem I am reporting is that this isn't caught.

      The console-dump happens in the "We should never get here" catch block below:

      void init() {
      try {
      try

      { new ContextInitializer(defaultLoggerContext).autoConfig(); }

      catch (JoranException je)

      { Util.report("Failed to auto configure default logger context", je); }

      StatusPrinter.printInCaseOfErrorsOrWarnings(defaultLoggerContext);
      contextSelectorBinder.init(defaultLoggerContext, KEY);
      initialized = true;
      } catch (Throwable t)

      { // we should never get here Util.report("Failed to instantiate [" + LoggerContext.class.getName() + "]", t); }

      }

      Notice that the StatusManager does not know that the config failed:

      13:32:07,643 |-INFO in ch.qos.logback.classic.LoggerContext[Emma logcontext] - Found resource [logback.groovy] at file:/XYZ/target/classes/logback.groovy
      13:32:08,807 |-INFO in ch.qos.logback.classic.gaffer.ConfigurationDelegate@2111e072 - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
      13:32:08,809 |-INFO in ch.qos.logback.classic.gaffer.ConfigurationDelegate@2111e072 - Naming appender as [STDOUT]

        Attachments

          Activity

            People

            • Assignee:
              logback-dev Logback dev list
              Reporter:
              stolsvik Endre Stølsvik
            • Votes:
              1 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated: