Все сообщения выводятся в логгер с именем "#SYSTEM_OUT". Для активации перенаправления необходимо один раз в начале работы приложения вызвать статический метод SystemOutAndErrToLog4jRedirecter.bindSystemOutAndErrToLog4j().
package logging;
import java.io.PrintStream;
import org.apache.log4j.Logger;
/**
*
* @author Cloud
*/
public class SystemOutAndErrToLog4jRedirecter {
private static final Logger logger = Logger.getLogger("#SYSTEM_OUT");
public static Logger getLogger() {
return logger;
}
public static void bindSystemOutAndErrToLog4j() {
System.setOut(createLoggingProxy(System.out));
System.setErr(createLoggingProxy(System.err));
}
private static PrintStream createLoggingProxy(final PrintStream realPrintStream) {
return new PrintStream(realPrintStream) {
@Override
public void print(final String str) {
realPrintStream.print(str);
logger.info(str);
}
};
}
}
Ништяк! Спасибо!
ОтветитьУдалитьЧего... а я всегда просто создавал класс с методами, куда отправлялись при всех событиях строки с модификаторами. Далее, в зависимости от модификатора - открывался тот или иной пишуший поток и обновлял лог-файл в папке в логами программы. Подключил правда недавно библиотеку для HTML, чтобы форматировать создающийся лог, для удобства восприятия..
ОтветитьУдалить