Ответ 1
для этого
можно использовать слегка запутанное свойство шаблона FileHandler.handlers=java.util.logging.FileHandler
# Default global logging level.
.level=INFO
#logging level for the foo.bar package
foo.bar.level=CONFIG
java.util.logging.FileHandler.pattern=%h/java%u.log
Шаблон состоит из строки, которая включает следующие специальные компоненты, которые будут заменены во время выполнения:
"/" локальный разделитель пути
"% t" системный временный каталог
"% h" значение системного свойства "user.home"
"% g" номер генерации для различения повернутых журналов
"% u" уникальный номер для разрешения конфликтов
"%%" переводит на один знак процента "%"
Если вы хотите войти в несколько файлов, вы можете сделать это, установив несколько обработчиков для нескольких именованных журналов
#FileHandler for file1
java.util.logging.FileHandler.pattern = logging_property_test.log
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
#FileHandler for file2
logging.FileHandler2.pattern = logging_property_test2.log
logging.FileHandler2.limit = 50000
FileHandler.count = 1
logging.FileHandler2.formatter = java.util.logging.SimpleFormatter
#setting handler for logger1
logging.PropertyTestingLogger.handlers=java.util.logging.FileHandler
#setting handler for logger2
logging.PropertyTestingLogger2.handlers=logging.FileHandler2
как вы можете видеть, трюк заключается в том, что существует logging.FileHandler2, который является обычным классом и ничего не делает, кроме расширения FileHandler
package logging;
import java.io.IOException;
import java.util.logging.FileHandler;
public class FileHandler2 extends FileHandler {
public FileHandler2() throws IOException, SecurityException {
super();
}
}
Фон: к сожалению, создатели Java не ожидали, что кто-либо войдет в систему в нескольких файлах. Если вы посмотрите на источник java.util.logging.FileHandler, вы обнаружите, что свойство pattern загружается именем класса:
public class FileHandler extends StreamHandler {
private String pattern;
private void configure() {
String cname = getClass().getName();
pattern = manager.getStringProperty(cname + ".pattern", "%h/java%u.log");