Groovy 没有方法的签名:logback.appender()
我在运行通过logback.groovy文件定义了logback的项目时遇到问题。运行logback.xml配置时不会出现此类问题 下面是logback.xml配置的一个示例:Groovy 没有方法的签名:logback.appender(),groovy,logback,logback-groovy,Groovy,Logback,Logback Groovy,我在运行通过logback.groovy文件定义了logback的项目时遇到问题。运行logback.xml配置时不会出现此类问题 下面是logback.xml配置的一个示例: <configuration> <appender name="testflow" class="ch.qos.logback.core.FileAppender" file="dbGripTest.log"> <encoder> &l
<configuration>
<appender name="testflow" class="ch.qos.logback.core.FileAppender" file="dbGripTest.log">
<encoder>
<pattern>%d{MMM d HH:mm:ss.SSS,UTC} %5p - %m [%ex] [%c{0}:%L] [%t]%n</pattern>
</encoder>
</appender>
<appender name="consoleMain" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{MMM d HH:mm:ss.SSS,UTC} %5p - %m [%ex] [%c{0}:%L] [%t]%n</pattern>
</encoder>
</appender>
<appender name="consoleSolace" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{MMM d HH:mm:ss.SSS,UTC} %5p - %m [%c{0}]%n</pattern>
</encoder>
</appender>
<root level="ERROR"/>
<logger name="com.db.testing" level="DEBUG">
<appender-ref ref="consoleMain" />
<appender-ref ref="testflow" />
</logger>
<logger name="com.db.taps" level="DEBUG">
<appender-ref ref="consoleSolace" />
<appender-ref ref="testflow" />
</logger>
</configuration>
这就是使用groovy配置运行应用程序时得到的结果:
Jun 10 07:37:33.312 INFO - Transport Receiver is listening on: [, idgrip/ccr/ext/abfx/request/uk] [SolaceTransport]
Jun 10 07:37:33.948 DEBUG - SNAP objects have been created [] [SNAPAdapter:-1] [main]
Exception in thread "main" groovy.lang.MissingMethodException: No signature of method: logback.appender() is applicable for argument types: (java.lang.String, java.lang.Class, logback$_run_closure1) values: [testflow, class ch.qos.logback.core.FileAppender, logback$_run_closure1@1a45193b]
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:56)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:78)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:151)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:179)
at logback.run(logback.groovy:9)
at cucumber.runtime.groovy.GroovyBackend.runIfScript(GroovyBackend.java:95)
at cucumber.runtime.groovy.GroovyBackend.loadGlue(GroovyBackend.java:77)
at cucumber.runtime.Runtime.<init>(Runtime.java:91)
at cucumber.runtime.Runtime.<init>(Runtime.java:69)
at cucumber.runtime.Runtime.<init>(Runtime.java:65)
at cucumber.api.cli.Main.run(Main.java:35)
at cucumber.api.cli.Main.main(Main.java:18)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
你知道是什么导致了这种行为吗?这正是appender应该在logback.groovy中声明的方式,根据的说法,当我正在修复另一个由Cucumber引起的问题时,我决定检查它是否有帮助。确实如此
这是因为这个.groovy文件被粘在Cucumber启动配置中,Cucumber似乎试图执行遇到的所有.groovy文件。在我将launcher中的Glue更改为仅指向功能文件后,当我正在修复另一个由Cucumber引起的问题时,这个错误消失了,我决定检查它是否有帮助。确实如此 这是因为这个.groovy文件被粘在Cucumber启动配置中,Cucumber似乎试图执行遇到的所有.groovy文件。在我将launcher中的Glue更改为只指向功能文件后,这个错误消失了
Jun 10 07:37:33.312 INFO - Transport Receiver is listening on: [, idgrip/ccr/ext/abfx/request/uk] [SolaceTransport]
Jun 10 07:37:33.948 DEBUG - SNAP objects have been created [] [SNAPAdapter:-1] [main]
Exception in thread "main" groovy.lang.MissingMethodException: No signature of method: logback.appender() is applicable for argument types: (java.lang.String, java.lang.Class, logback$_run_closure1) values: [testflow, class ch.qos.logback.core.FileAppender, logback$_run_closure1@1a45193b]
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:56)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:78)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:151)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:179)
at logback.run(logback.groovy:9)
at cucumber.runtime.groovy.GroovyBackend.runIfScript(GroovyBackend.java:95)
at cucumber.runtime.groovy.GroovyBackend.loadGlue(GroovyBackend.java:77)
at cucumber.runtime.Runtime.<init>(Runtime.java:91)
at cucumber.runtime.Runtime.<init>(Runtime.java:69)
at cucumber.runtime.Runtime.<init>(Runtime.java:65)
at cucumber.api.cli.Main.run(Main.java:35)
at cucumber.api.cli.Main.main(Main.java:18)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
[INFO] +- ch.qos.logback:logback-classic:jar:0.9.28.1:compile
[INFO] | \- ch.qos.logback:logback-core:jar:0.9.28.1:compile
[INFO] +- org.codehaus.groovy:groovy-all:jar:2.4.3:compile