Удалить часть пользовательского обработчика журнала - PullRequest
0 голосов
/ 12 мая 2018

Я сейчас работаю над программой и настраиваю собственные обработчики журналов.Мой обработчик журнала выглядит следующим образом:

public class ProxyLogFormat extends Formatter {

    // Create a DateFormat to format the logger timestamp.
    private static final DateFormat df = new SimpleDateFormat("hh:mm:ss.SSS");

    public String format(LogRecord record) {
        StringBuilder builder = new StringBuilder(1000);
        builder.append(df.format(new Date(record.getMillis()))).append(" - ");
        builder.append("[").append(record.getLoggerName()).append("] -");
        builder.append("[").append(record.getLevel()).append("] - ");
        builder.append(formatMessage(record));
        builder.append("\n");
        return builder.toString();
    }

    public String getHead(Handler h) {
        return super.getHead(h);
    }

    public String getTail(Handler h) {
        return super.getTail(h);
    }
}

Я регистрирую обработчик журнала следующим образом:

   Handler CH = new ConsoleHandler();
    CH.setFormatter(new ProxyLogFormat());
    log.addHandler(CH);

(журнал является объектом Logger) Однако, несмотря на все мои попытки, журнал выглядиткак это:

10:31:21.249 - [MAIN] -[INFO] - Starting proxy...
May 11, 2018 10:31:21 PM pw.mmvyoutube.proxycrack.Main main
INFO: Starting proxy...
10:31:21.265 - [MAIN] -[INFO] - Host: 0.0.0.0
May 11, 2018 10:31:21 PM pw.mmvyoutube.proxycrack.Main main
INFO: Host: 0.0.0.0
10:31:21.266 - [MAIN] -[INFO] - Remote Port: 111
May 11, 2018 10:31:21 PM pw.mmvyoutube.proxycrack.Main main
INFO: Remote Port: 111
10:31:21.268 - [MAIN] -[INFO] - Local Port: 100
May 11, 2018 10:31:21 PM pw.mmvyoutube.proxycrack.Main main
INFO: Local Port: 100

Как видите, некоторые сообщения повторяются, и у них все еще есть раздражающее May 11, 2018 10:31:21 PM pw.mmvyoutube.proxycrack.Main main Как я могу удалить эту строку?

1 Ответ

0 голосов
/ 14 мая 2018

В дереве регистратора установлено несколько ConsoleHandler объектов. Вам нужно найти эти дополнительные обработчики и удалить их.

У вас есть несколько вариантов:

  1. Вы можете вызвать LogManager.reset() перед установкой обработчика консоли. Это удалит все установленные обработчики в дереве регистратора.
  2. Не создавайте новый ConsoleHandler, просто измените формат ConsoleHandler по умолчанию. Например

    for (Handler h : Logger.getLogger("").getHandlers()) { if(h instanceof ConsoleHandler) { h.setFormatter(new ProxyLogFormat()); } }

  3. Не используйте код для настройки дерева регистратора и используйте файл logging.properties . Используя этот файл, вы можете изменить форматтер по умолчанию.

  4. Редактировать шаблон формата по умолчанию SimpleFormatter . Это можно указать с помощью клавиши java.util.logging.SimpleFormatter.format в logging.properties или в качестве системного свойства . Ваш шаблон %1$tH:%1$tM:%1$tS.%1$tL - [%3$s] -[%4$s] %5$s%n

...