How can I use Logback to capture System.out messages in a Java program?
For example, I would like to use this code:
System.out.println("test: console out to file instead");
... and capture it's output to a file.
Can this be done using the logback.xml config file?
There's a little jar that does this for you: http://projects.lidalia.org.uk/sysout-over-slf4j/index.html
Please do read the FAQ: http://projects.lidalia.org.uk/sysout-over-slf4j/faq.html - If you use this module and configure logback to output to stdout, you'll get a stream of StackOverFlowError s :D
If you want to do this yourself, you need to replace System.out and System.err with a custom PrintWriter
(?I cannot fully remember the class name). This custom PrintWriter
needs to forward the calls to logback in a semi intelligent manner, as print writters can also print character by character rather than by line.
The sysout-over-slf4j solutions answers the question 100%.
Just take note: If you setup the Java Util Logger -> SLF4j bridge (jul-to-slf4j), all the System.out.println messages will also be in you logback log file, along with all the messages printed to the Java util logger.
Here is how to set it up: https://stackoverflow.com/a/43242620/2359435
Yes you can do it with some configuration similar to..
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<target>System.out</target>
<filter class="com.foo.StdOutFilter" />
...
</appender>
<logger name="mylogger" level="debug">
<appender-ref ref="stdout" />
</logger>
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.