Если я запускаю следующий кодLog4j2 вызывает PreferIP6 сбой
public class NetworkTester {
public static void main(String[] args) {
System.setProperty("java.net.preferIPv6Addresses", "true");
System.setProperty("java.net.preferIPv4Stack", "false");
try {
InetAddress addr = InetAddress.getByName("www.google.com");
System.out.println(addr);
if (addr instanceof Inet4Address) {
System.out.println(4);
}
if (addr instanceof Inet6Address) {
System.out.println(6);
}
} catch (UnknownHostException e) {
e.printStackTrace();
}
}}
я получаем следующий вывод
www.google.com/2607:f8b0:4009:801:0:0:0:2004
6
однако, если я добавить строку
private static Logger log4j = LogManager.getLogger();
и я импортировать после
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
я
www.google.com/4.59.40.94
4
Я использую log4j2 2.6.2 и jdk1.8.0_51. Если я использую -Djava.net.preferIPv6Addresses=true
как аргумент vm, я получаю адрес IPv6. Но приложение, которое я разрабатываю, предназначено для запуска как исполняемый файл jar, и я не могу найти способ заставить исполняемый jar запускать аргумент vm без написания какого-либо файла bat или сценария. Как я могу получить Мое приложение, чтобы предпочесть ipv6 и запустить log4j?
Хорошая идея, я должен был подумать об этом! – xav
Это сработало! Энди подумает, почему свойство System необходимо установить перед инициализацией log4j? – rickmaster
Я предполагаю, что log4j ищет имя локального хоста во время инициализации, и это, в свою очередь, использует ip v4, если не указано иное. –