I have opened a bug in backlog JIRA on this issue, which contains a work around for this exception. People are encouraged to vote on this issue http://jira.qos.ch/browse/LBCORE-171
Maxim. On Wed, Oct 13, 2010 at 6:18 PM, Maxim Veksler <[email protected]> wrote: > Hi Nacho, > > The this configuration of logback works for you? > > I've tried to do the same, with the following versions of > logback: logback-classic-0.9.24.jar, logback-core-0.9.24.jar, > slf4j-api-1.6.1.jar > > With the following configuration of backlog.xml: > > cat WEB-INF/classes/logback.xml > <configuration> > <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> > <encoder> > <!-- <pattern>%-5level %logger{0} - %msg%n</pattern> --> > <pattern>%-5level %logger{36} - %msg%n</pattern> > > </encoder> > <filter class="ch.qos.logback.classic.filter.LevelFilter"> > <level>ERROR</level> > <onMatch>DENY</onMatch> > <onMismatch>ACCEPT</onMismatch> > </filter> > </appender> > > <appender name="STDERR" class="ch.qos.logback.core.ConsoleAppender"> > <target>System.err</target> > <encoder> > <pattern>%-5level %logger{0} - %msg%n</pattern> > </encoder> > <filter class="ch.qos.logback.classic.filter.LevelFilter"> > <level>ERROR</level> > <onMatch>ACCEPT</onMatch> > <onMismatch>DENY</onMismatch> > </filter> > </appender> > > <root level="INFO"> > <appender-ref ref="STDOUT" /> > <appender-ref ref="STDERR" /> > </root> > > > And I'm getting the following exception when my code tries to create a new > Logger: > > 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.getLocalHostName(ContextUtil.java:30) > at > ch.qos.logback.core.util.ContextUtil.addHostNameAsProperty(ContextUtil.java:39) > 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:77) > 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: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 org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:254) > at ..............<clinit>(.................) > at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) > at > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) > at > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) > at java.lang.reflect.Constructor.newInstance(Constructor.java:513) > at java.lang.Class.newInstance0(Class.java:355) > at java.lang.Class.newInstance(Class.java:308) > at org.mortbay.jetty.servlet.Holder.newInstance(Holder.java:153) > at > org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:428) > at > org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:339) > at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) > at > com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at > com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at > com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) > at > org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) > at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) > at > org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) > at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) > at > com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70) > at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) > at > com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:349) > at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) > at org.mortbay.jetty.Server.handle(Server.java:326) > at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) > at > org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923) > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547) > at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) > at > org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) > at > org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) > > > Now, before I go dig any further into how to work around this, could you > please share your experience with this issue? > > Thanks, > Maxim. > > > On Tue, Oct 12, 2010 at 11:45 AM, Nacho Coloma <[email protected]> wrote: > >> JUL has been reported as 60 times slower than other implementations >> because of the way they log: >> http://www.infoq.com/news/2007/08/logback >> >> Just configuring properly log4j/logback to log to System.err or >> System.out should be enough to see messages properly in the AppEngine >> console. In logback, it's something like this: >> >> <appender name="STDOUT" >> class="ch.qos.logback.core.ConsoleAppender"> >> <encoder> >> <pattern>%-5level %logger{0} - %msg%n >> </pattern> >> </encoder> >> <filter class="ch.qos.logback.classic.filter.LevelFilter"> >> <level>ERROR</level> >> <onMatch>DENY</onMatch> >> <onMismatch>ACCEPT</onMismatch> >> </filter> >> </appender> >> >> <appender name="STDERR" >> class="ch.qos.logback.core.ConsoleAppender"> >> <target>System.err</target> >> <encoder> >> <pattern>%-5level %logger{0} - %msg%n >> </pattern> >> </encoder> >> <filter class="ch.qos.logback.classic.filter.LevelFilter"> >> <level>ERROR</level> >> <onMatch>ACCEPT</onMatch> >> <onMismatch>DENY</onMismatch> >> </filter> >> </appender> >> >> <root level="DEBUG"> >> <appender-ref ref="STDOUT" /> >> <appender-ref ref="STDERR" /> >> </root> >> >> Then, you can use slf4j-jcl to redirect also your commons-logging >> messages. >> >> On Oct 3, 6:14 pm, Eurig Jones <[email protected]> wrote: >> > Hey, >> > >> > I've written a Log4j appender which passes on log4j severity levels to >> > GAE's JUL framework so you can view your log4j events (or the events >> > your chosen framework provides) if you need to. >> > >> > http://androidisland.blogspot.com/2010/10/gae-and-log4j-getting-them-. >> .. >> > >> > This is a quick implementation of this Appender for me and so far it >> > works, but I'd love to hear some feedback about what it doesn't do (or >> > doesn't do properly) as I've not used it in anger. >> > >> > Regards, >> > Eurig Jones >> >> -- >> 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 >> [email protected]. >> To unsubscribe from this group, send email to >> [email protected]<google-appengine-java%[email protected]> >> . >> For more options, visit this group at >> http://groups.google.com/group/google-appengine-java?hl=en. >> >> > -- 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 [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
