пятница, 14 сентября 2012 г.

Перенаправление сообщений со стандартного потока вывода system.out в логгер log4j на java

В коде своих приложений для логирования я везде стараюсь использовать библиотеку log4j, однако во многих сторонних библиотеках часто используются другие средства логирования, в частности стандартные потоки вывода System.out и System.err (методы System.out.println() и т.д.). При работе приложения такие сообщения и информация которую они несут, могут попросту потеряться, если их не перехватывать. Для перехвата таких сообщений и был написан класс, приведенный ниже.
Все сообщения выводятся в логгер с именем "#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);
            }
        };
    }
}

2 комментария:

  1. Чего... а я всегда просто создавал класс с методами, куда отправлялись при всех событиях строки с модификаторами. Далее, в зависимости от модификатора - открывался тот или иной пишуший поток и обновлял лог-файл в папке в логами программы. Подключил правда недавно библиотеку для HTML, чтобы форматировать создающийся лог, для удобства восприятия..

    ОтветитьУдалить

Ярлыки

java (31) оптимизация (7) CPanel (5) svn (5) windows xp (5) ошибка (5) свой сервер (5) файлы и папки (5) gui (4) регулярные выражения (4) jacoco (3) redmine (3) windows (3) автоматизация (3) защита данных (3) резервное копирование (3) сервер (3) JavaScript (2) Oracle SQL (2) adsl модем (2) apache maven (2) apache tomcat (2) coverage (2) dropbox (2) excel (2) firewall (2) netbeans (2) office 2007 (2) samsung (2) system tray (системный трей) (2) xerox (2) вирусы (2) принтер (2) сериализация (2) удаленный рабочий стол (2) HTML (1) JFileChooser (1) MySQL (1) Nokia (1) Ovi (1) P660R-T1 (1) WakeOnLan (1) blogger.com (1) ctfmon.exe (1) email (1) flash память (1) ftp (1) integration testing (1) ip (1) jQuery (1) jvisualWm (1) log4j (1) look and feel (1) myBatis (1) php (1) serialVersionUID (1) skype (1) smtp (1) ssh (1) swing (1) torrents (1) unit-testing (1) unix (1) vpn (1) windows 7 (1) xStarter (1) zip (1) безопасность (1) вход в систему (1) дизайн (1) документация (1) заправка (1) интернет (1) логирование (1) мышь (1) патч (1) перенос (1) печать (1) плагины (1) почтовые сообщения (1) программирование (1) процессы (1) прошивка (1) сеть (1) сеть. ошибка (1) скрытые файлы (1) списки (1) фильтрация (1) фокус (1) часовые пояса (1) шифрование (1) экран (1)