/** * */ package com.maalaang.omtwitter.io; import java.io.IOException; import java.io.OutputStream; import java.io.PrintStream; import org.apache.log4j.Level; import org.apache.log4j.Logger; /** * @author Sangwon Park * */ public class LogSystemStream { public static void redirectOutToLog(Level level) { System.setOut(new PrintStream(new LogRedirectedStream(Logger.getLogger("system.out"), level, System.out))); } public static void redirectErrToLog(Level level) { System.setErr(new PrintStream(new LogRedirectedStream(Logger.getLogger("system.err"), level, System.err))); } } final class LogRedirectedStream extends OutputStream { private final Logger logger; private final Level logLevel; public LogRedirectedStream(Logger logger, Level logLevel, OutputStream outputStream) { super(); this.logger = logger; this.logLevel = logLevel; } public void write(byte[] b) throws IOException { if (logger.isEnabledFor(logLevel)) { logger.log(logLevel, new String(b).replaceAll("\\s+", " ")); } } public void write(byte[] b, int off, int len) throws IOException { if (logger.isEnabledFor(logLevel)) { logger.log(logLevel, new String(b, off, len).replaceAll("\\s+", " ")); } } public void write(int b) throws IOException { if (logger.isEnabledFor(logLevel)) { logger.log(logLevel, String.valueOf((char) b)); } } }