输出 sout 到日志文件

Wu Jun 2020-08-11 11:22:29
Categories: > Tags:

使用 System.setOut()、System.setErr() 方法,可以将 System.out.println() 的 PrintStream 纳入已配置的日志管理。

@Slf4j
public class StdOutErrConfig {

    public static void registerStdOutAndErrToLog() {
        log.info("register stdout and err to log");
        System.setOut(createLoggingProxy(true, System.out));
        System.setErr(createLoggingProxy(false, System.err));
    }

    public static PrintStream createLoggingProxy(final boolean stdout, PrintStream realPrintStream) {
        return new PrintStream(realPrintStream) {
            @Override
            public void print(final String string) {
                if (stdout) {
                    log.info(string);
                } else {
                    log.error(string);
                }
            }
        };
    }
}

public class Application {

    public static void main(String[] args) {
        StdOutErrConfig.registerStdOutAndErrToLog();
        SpringApplication.run(Application.class, args);
    }

}