如何使用 Logback 将 System.out 重定向到日志文件?
How to redirect System.out to a log file using Logback?
如何使用 Logback 在 Java 程序中捕获 System.out 消息?
例如,我想使用这个代码:
System.out.println("test: console out to file instead");
...并将其输出捕获到文件中。
可以使用 logback.xml 配置文件来完成吗?
是的,您可以使用类似于..
的一些配置来完成
<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>
有一个小罐子可以为您做到这一点:http://projects.lidalia.org.uk/sysout-over-slf4j/index.html
请务必阅读常见问题解答:http://projects.lidalia.org.uk/sysout-over-slf4j/faq.html - 如果您使用此模块并将 logback 配置为输出到标准输出,您将获得 WhosebugErrors 流: D
如果你想自己做,你需要用自定义的PrintWriter
替换System.out和System.err(?我记不太清class的名字了) .这种习惯 PrintWriter
需要以半智能方式将调用转发给 logback,因为打印作者也可以逐字符而不是逐行打印。
sysout-over-slf4j 解决方案 100% 回答了这个问题。
请注意:如果您设置 Java Util Logger -> SLF4j 桥(jul-to-slf4j),所有 System.out.println 消息也将在您的 logback 日志文件中,以及将所有消息打印到 Java util 记录器。
设置方法如下:
如何使用 Logback 在 Java 程序中捕获 System.out 消息?
例如,我想使用这个代码:
System.out.println("test: console out to file instead");
...并将其输出捕获到文件中。
可以使用 logback.xml 配置文件来完成吗?
是的,您可以使用类似于..
的一些配置来完成<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>
有一个小罐子可以为您做到这一点:http://projects.lidalia.org.uk/sysout-over-slf4j/index.html
请务必阅读常见问题解答:http://projects.lidalia.org.uk/sysout-over-slf4j/faq.html - 如果您使用此模块并将 logback 配置为输出到标准输出,您将获得 WhosebugErrors 流: D
如果你想自己做,你需要用自定义的PrintWriter
替换System.out和System.err(?我记不太清class的名字了) .这种习惯 PrintWriter
需要以半智能方式将调用转发给 logback,因为打印作者也可以逐字符而不是逐行打印。
sysout-over-slf4j 解决方案 100% 回答了这个问题。
请注意:如果您设置 Java Util Logger -> SLF4j 桥(jul-to-slf4j),所有 System.out.println 消息也将在您的 logback 日志文件中,以及将所有消息打印到 Java util 记录器。
设置方法如下: