如果我運行下面的代碼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
這工作! Andy想法爲什麼在初始化log4j之前需要設置System屬性? – rickmaster
我的猜測是,log4j在初始化過程中查找本地主機名,並且除非另外指定,否則將使用ip v4。 –