Можно ли настроить два FileHandlers в одном файле logging.properties? - PullRequest
3 голосов
/ 07 декабря 2009

Используя классы журналирования в java.util.logging, возможно ли установить два разных FileHandlers с разными форматерами, которые будут записывать различную информацию журналирования в два разных файла?

В настоящее время я использую файл logging.properties, и строка обработчиков не внушает оптимизма:

handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler

Я не вижу, как я мог бы различить два java.util.logging.FileHandler с позже в файле.

Глядя на связанные вопросы, похоже, что переключение на Log4J дало бы мне желаемую гибкость, но я бы предпочел избежать зависимости от другой библиотеки, если бы библиотека журналов JSE могла быть решена на то, что я хочу каким-либо образом.

Ответы [ 3 ]

4 голосов
/ 07 декабря 2009

Подробное прочтение соответствующего API предлагает громкий номер

Тогда выбор между динамическим созданием регистратора в коде, как показано в ответе на этот вопрос , и простым отказом от использования Log4J или другой более сложной библиотеки журналирования.

0 голосов
/ 19 марта 2013

возможно, я не знаю, как объявить это в свойствах журналирования, однако

public static void main(String args[])  {

    Logger logger=Logger.getLogger("");
    FileHandler fh=new FileHandler("<yourPath" +
            "%g.txt",20000,5);
    fh.setFormatter(new SimpleFormatter());
    FileHandler fd=new FileHandler("yourSecondPath" +
            "%g.txt",20000,5);
    fd.setFormatter(new SimpleFormatter());

    logger.addHandler(fd);
}

вы можете легко заменить simpleFormaters своим собственным форматером и установить разные уровни ведения журнала для двух обработчиков, но опять же я не нахожу никакой информации о синтаксисе для использования в файле logging.properties для получения этого поведения

0 голосов
/ 07 декабря 2009

Вы можете создать собственный уровень журнала, расширив класс Level; просто дайте ему уникальный идентификатор.

import java.util.logging.*;

public class CustomLogLevel extends Level
{
  public static void main(String[] args) 
  {
    Logger log = Logger.getLogger("robertgrant.org");
    Level templevel = Level.WARNING;
    Level level = new CustomLogLevel("Rob Level", templevel.intValue());
    Level customlevel = level.parse("Rob Level");
    log.log(customlevel, "This is from a custom level");
  }

  public CustomLogLevel(String name, int value){
    super(name, value);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...