使用 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);
}
}