I've posted the same question over on the logback forum but I wanted to check here to see who is using SLF4J/logback with GAE:
http://old.nabble.com/Google-App-Engine-and-java.net.InetAddress-ts28628992.html Question is posted here again: I'm trying to hook up slf4j/logback into a Google App Engine project but it looks like I'm running into a problem with a class that GAE blocks, namely java.net.InetAddress. I'm using the latest: slf4j 1.6.0 and logback 0.9.21, tied into v1.3.3.1 of the AppEngine SDK and here is my java version: * java version "1.6.0_18" * OpenJDK Runtime Environment (IcedTea6 1.8) (6b18-1.8-0ubuntu1) * OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode) If I don't include a logback.xml, my gae dev server starts up properly and I see my log messages printed to the console. The place in *my* code where the failure happens is in the very first call to grab the logger, in com.cosanta.eventflow.control.EventServletContextListener:43, which is just: private org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(this.getClass().getName()); I took the logback.xml right out of the examples: logback-examples/src/ main/java/chapters/configuration/sample0.xml: <?xml version="1.0" encoding="UTF-8" ?> <configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <!-- encoders are assigned by default the type ch.qos.logback.classic.encoder.PatternLayoutEncoder --> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg %n</pattern> </encoder> </appender> <root level="debug"> <appender-ref ref="STDOUT" /> </root> </configuration> When I try to start the GAE dev server from my eclipse workspace, I get the following printed to the console: May 21, 2010 1:25:05 AM com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml INFO: Successfully processed /home/sean/Dropbox/dev/workspace/ EventFlow/war/WEB-INF/web.xml Failed to instantiate [ch.qos.logback.classic.LoggerContext] Reported exception: java.lang.NoClassDefFoundError: java.net.InetAddress 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 ch.qos.logback.core.util.ContextUtil.addHostNameAsProperty(ContextUtil.java: 34) at ch.qos.logback.classic.joran.action.ConfigurationAction.begin(ConfigurationAction.java: 47) at ch.qos.logback.core.joran.spi.Interpreter.callBeginAction(Interpreter.java: 273) at ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java: 145) at ch.qos.logback.core.joran.spi.Interpreter.startElement(Interpreter.java: 127) at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:40) at ch.qos.logback.core.joran.spi.Interpreter.play(Interpreter.java:332) at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java: 126) at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java: 93) at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java: 52) at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java: 60) at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java: 121) 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:121) at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:111) at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:268) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:241) at com.cosanta.eventflow.control.EventServletContextListener.<init>(EventServletContextListener.java: 43) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java: 57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java: 45) at java.lang.reflect.Constructor.newInstance(Constructor.java: 532) at java.lang.Class.newInstance0(Class.java:372) at java.lang.Class.newInstance(Class.java:325) at org.mortbay.jetty.webapp.WebXmlConfiguration.newListenerInstance(WebXmlConfiguration.java: 650) at org.mortbay.jetty.webapp.WebXmlConfiguration.initListener(WebXmlConfiguration.java: 631) at org.mortbay.jetty.webapp.WebXmlConfiguration.initWebXmlElement(WebXmlConfiguration.java: 368) at org.mortbay.jetty.webapp.WebXmlConfiguration.initialize(WebXmlConfiguration.java: 289) at org.mortbay.jetty.webapp.WebXmlConfiguration.configure(WebXmlConfiguration.java: 222) at org.mortbay.jetty.webapp.WebXmlConfiguration.configureWebApp(WebXmlConfiguration.java: 180) at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java: 1247) at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java: 517) at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java: 467) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java: 50) at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java: 130) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java: 50) at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java: 130) at org.mortbay.jetty.Server.doStart(Server.java:224) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java: 50) at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java: 185) at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java: 146) at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java: 219) at com.google.appengine.tools.development.DevAppServerMain $StartAction.apply(DevAppServerMain.java:162) at com.google.appengine.tools.util.Parser $ParseResult.applyArgs(Parser.java:48) at com.google.appengine.tools.development.DevAppServerMain.<init>(DevAppServerMain.java: 113) at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java: 89) 01:25:06,971 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [WEB-INF/logback.xml] at [file:/home/sean/Dropbox/dev/ workspace/EventFlow/war/WEB-INF/logback.xml] 01:25:07,598 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set The server is running at http://localhost:8888/ So as you can see, the server starts fine. It has no problem handling requests etc but there is no further logging displayed. The logback code that causes GAE to scream is the placement of the hostname onto the context in ContextUtils:34: InetAddress localhost = InetAddress.getLocalHost(); context.putProperty(CoreConstants.HOSTNAME_KEY, localhost.getHostName()); Has anyone seen the same problem? Is there something I'm misconfiguring? If not, is there any way to work around this? Thanks for your help. Sean -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-j...@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.