Все сообщения выводятся в логгер с именем "#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, чтобы форматировать создающийся лог, для удобства восприятия..
ОтветитьУдалить