Похоже, вы пытаетесь применить конфигурацию в стиле log4j к java.util.logging.Если вы хотите создать несколько FileHandler с разными форматерами, вам нужно использовать опцию config для установки каждого FileHandler.Создайте класс конфигурации:
package so;
import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;
import java.util.logging.XMLFormatter;
public final class LoggingConfig {
/**
* Pin the loggers.
*/
private static final Logger root = Logger.getLogger("");
private static final Logger named = Logger.getLogger("some.name");
/**
* Configure the loggers.
* @throws Exception if there is a problem.
*/
public LoggingConfig() throws Exception {
root.addHandler(newRootHandler());
named.addHandler(newNamedHandler());
}
private FileHandler newRootHandler() throws IOException {
FileHandler f = new FileHandler("simple%g.%u.log", 200000, 20, true);
f.setFormatter(new SimpleFormatter());
return f;
}
private FileHandler newNamedHandler() throws IOException {
FileHandler f = new FileHandler("xml%g.%u.log", 200000, 20, true);
f.setFormatter(new XMLFormatter());
return f;
}
}
Затем добавьте следующее в свои logging.properties:
config=so.LoggingConfig
В противном случае вы можете создать подкласс FileHandler просто для создания нового имени класса, которое можно использоватьв ваших logging.properties.
Вы должны использовать опцию % g , чтобы различать повернутые журналы и% u для разрешения конфликтов.Из документации FileHandler:
Таким образом, если бы все три процесса пытались войти в систему, чтобы fred% u.% G.txt, они могли бы в конечном итоге использовать fred0.0.txt, fred1.0.txt,fred2.0.txt в качестве первого файла во вращающихся последовательностях.
По умолчанию все именованные регистраторы будут записывать в обработчики корневого регистратора.Поэтому, в зависимости от того, что вы делаете, вам может не понадобиться прикреплять обработчики файлов к именованным регистраторам.