/* * Copyright (c) 2018-2028, DreamLu All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: DreamLu 卢春梦 (596392912@qq.com) */ package org.springblade.core.log4j2; import lombok.extern.slf4j.Slf4j; import java.io.PrintStream; import java.util.Locale; /** * 替换 系统 System.err 和 System.out 为log * * @author L.cm */ @Slf4j public class LogPrintStream extends PrintStream { private final boolean error; private LogPrintStream(boolean error) { super(error ? System.err : System.out); this.error = error; } public static LogPrintStream out() { return new LogPrintStream(false); } public static LogPrintStream err() { return new LogPrintStream(true); } @Override public void print(String s) { if (error) { log.error(s); } else { log.info(s); } } /** * 重写掉它,因为它会打印很多无用的新行 */ @Override public void println() { } @Override public void println(String x) { if (error) { log.error(x); } else { log.info(x); } } @Override public PrintStream printf(String format, Object... args) { if (error) { log.error(String.format(format, args)); } else { log.info(String.format(format, args)); } return this; } @Override public PrintStream printf(Locale l, String format, Object... args) { if (error) { log.error(String.format(l, format, args)); } else { log.info(String.format(l, format, args)); } return this; } }