[logback-user] how to redirect system.out/err to a file?

Zhangguangchao zhangguangchao at huawei.com
Fri Jul 22 08:28:26 CEST 2011


Robert,
It's right that what you think about the classloader for each module. In OSGi environment, every bundle has its own classloader. 
It seems I have to wait for the availability of 2.0 version of sysout-over-slf4j.

For the error caused by '>', thanks for your analysis, I check the bundle org.apache.felix.shell.tui which provides a simple, text-based user interface for the Apache Felix Shell and update it from 1.0.2 to 1.4.1, the latest version. Then the latest one works well with Sysout-over-slf4j. In 1.4.1 version, as you say, it indeed print '>' without a line break. Perhaps the older version has some problem.

Thanks a lot.

> -----Original Message-----
> From: logback-user-bounces at qos.ch [mailto:logback-user-bounces at qos.ch]
> On Behalf Of Robert Elliot
> Sent: Thursday, July 21, 2011 8:39 PM
> To: logback users list
> Subject: Re: [logback-user] how to redirect system.out/err to a file?
> 
> I'm afraid I know very little about OSGi; I believe it uses separate class loaders
> for each module?  In which case it will not work very well with
> sysout-over-slf4j at all.  I'd need to know more about OSGi in general and how
> SLF4J works with OSGi's class loading in particular in order to tackle it.
> 
> In terms of the error - it looks as if something is printing to System.out without
> a line break at the end sufficiently often that the buffer it maintains inside is
> blowing up.  I'd guess that felix is doing something like:
> 
> System.out.println("message\n>");
> 
> in order to leave a > style prompt after each response.  Because that doesn't
> end with a line break sysout-over-slf4j assumes you want it to be built up into a
> single log message - which is presumably getting so large it blows up with an
> OutOfMemory error.
> 
> Sysout-over-slf4j 2 takes a different (and safer) approach which should solve
> this; it just needs me to a) document it and b) sort out the maven reporting
> now I've moved to Maven 3.
> 
> 
> ----- Original Message -----
> > From: "Zhangguangchao" <zhangguangchao at huawei.com>
> > To: "logback users list" <logback-user at qos.ch>
> > Cc: "Qinyanxin" <qinyanxin at huawei.com>
> > Sent: Thursday, 21 July, 2011 8:03:57 AM
> > Subject: Re: [logback-user] how to redirect system.out/err to a file?
> > Hi, David,
> > Thanks for your information, it helps a lot.
> >
> > But it seems that sysout-over-slf4j has not supported OSGi yet. And I
> > can't redirect the system.out/err from various bundle which has its
> > own classloader in OSGi environment. If sysout-over-slf4j works like
> > log4j-over-slf4j, that will be very cool.
> >
> > Do you have any other advice ? Thanks.
> >
> > Another question is when I redirect felix-main system.out into a file,
> > it casts an exception as follows:
> >
> > 2011-07-21 14:21:48,142 ERROR [Felix Shell TUI] java.lang.ThreadGroup
> > [LogLevel.java:88] Exception in thread "Felix Shell TUI"
> > java.lang.OutOfMemoryError: Java heap space
> > 2011-07-21 14:21:48,143 ERROR [Felix Shell TUI] java.lang.ThreadGroup
> > [LogLevel.java:88] at java.util.Arrays.copyOf(Arrays.java:2882)
> > 2011-07-21 14:21:48,143 ERROR [Felix Shell TUI] java.lang.ThreadGroup
> > [LogLevel.java:88] at
> >
> java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100
> )
> > 2011-07-21 14:21:48,143 ERROR [Felix Shell TUI] java.lang.ThreadGroup
> > [LogLevel.java:88] at
> > java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:390)
> > 2011-07-21 14:21:48,143 ERROR [Felix Shell TUI] java.lang.ThreadGroup
> > [LogLevel.java:88] at
> > java.lang.StringBuilder.append(StringBuilder.java:119)
> > 2011-07-21 14:21:48,143 ERROR [Felix Shell TUI] java.lang.ThreadGroup
> > [LogLevel.java:88] at
> >
> uk.org.lidalia.sysoutslf4j.context.LoggerAppenderImpl.append(LoggerAppende
> rImpl.java:52)
> > 2011-07-21 14:21:48,144 ERROR [Felix Shell TUI] java.lang.ThreadGroup
> > [LogLevel.java:88] at
> >
> uk.org.lidalia.sysoutslf4j.system.SLF4JPrintStreamDelegate.delegatePrint(SLF4
> JPrintStreamDelegate.java:68)
> > 2011-07-21 14:21:48,144 ERROR [Felix Shell TUI] java.lang.ThreadGroup
> > [LogLevel.java:88] at
> >
> uk.org.lidalia.sysoutslf4j.system.SLF4JPrintStreamImpl.print(SLF4JPrintStreamI
> mpl.java:251)
> > 2011-07-21 14:21:48,144 ERROR [Felix Shell TUI] java.lang.ThreadGroup
> > [LogLevel.java:88] at
> > org.apache.felix.shell.tui.Activator$ShellTuiRunnable.run(Activator.java:133)
> > 2011-07-21 14:21:48,144 ERROR [Felix Shell TUI] java.lang.ThreadGroup
> > [LogLevel.java:88] at java.lang.Thread.run(Thread.java:619)
> >
> > And in the log file there are lots of '>' which appears on the felix
> > terminal console. It seems that '>' is printed by felix and then
> > redirected to sysout-over-slf4j. However it has too many '>' and
> > SLF4JPrintStreamImpl goes down. Am I right?
> > Is this a bug of sysout-over-slf4j?
> >
> > Here is a list I use: felix 3.2.0, slf4j-api-1.6.1, logback-* -0.9.28
> > and sysout-over-slf4j-1.0.2.
> > Any advice?
> >
> >
> > From: logback-user-bounces at qos.ch [mailto:logback-user-bounces at qos.ch]
> > 代表 David Roussel
> > at: 2011年7月20日 2:57
> > Receiver: logback users list
> > Subject: Re: [logback-user] how to redirect system.out/err to a file?
> >
> > Dominic,
> >
> > That work mentioned by rob was done, and he sent a notification to
> > this this a while back.
> >
> > You can find all the instructions here:
> > http://projects.lidalia.org.uk/sysout-over-slf4j/
> >
> > There are some restrictions, so do read the docs.
> >
> > David
> >
> > On 19 Jul 2011, at 07:42, Zhangguangchao wrote:
> >
> >
> >
> > Hi,
> > Is there a configuration to redirect STDOUT to a file?
> > By the way, I found the same question asked in
> > http://www.qos.ch/pipermail/logback-user/2009-June/001141.html and I
> > wanna know whether it is fixed and how. And I didn't found the new
> > feature about ConsoleAppender configuration changed in Logback News.
> >
> > Thanks a lot.
> >
> > Dominic Zhang
> >
> > _______________________________________________
> > Logback-user mailing list
> > Logback-user at qos.ch
> > http://qos.ch/mailman/listinfo/logback-user
> >
> > _______________________________________________
> > Logback-user mailing list
> > Logback-user at qos.ch
> > http://qos.ch/mailman/listinfo/logback-user
> _______________________________________________
> Logback-user mailing list
> Logback-user at qos.ch
> http://qos.ch/mailman/listinfo/logback-user


More information about the Logback-user mailing list