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.