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 <icol...@gmail.com> 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 <eurigjo...@gmail.com> 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
> google-appengine-j...@googlegroups.com.
> To unsubscribe from this group, send email to
> google-appengine-java+unsubscr...@googlegroups.com<google-appengine-java%2bunsubscr...@googlegroups.com>
> .
> 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 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.

Reply via email to