2013-07-11 54 views
1

我有一個基本的cmd程序,它調用一個帶有main方法的Install類的jar。 Install類使用其資源文件夾中的java.util.logging.config.file。如何從磁盤使用logging.properties文件作爲java.util.logging.properties文件

private static void setupLogging() { 
    if (System.getProperty("java.util.logging.config.file") == null) { 
     final InputStream inputStream = Install.class.getResourceAsStream("/logging.properties"); 
     try { 
      LogManager.getLogManager().readConfiguration(inputStream); 
     } catch (final IOException e) { 
      Logger.getAnonymousLogger().severe("Could not load default logging.properties file"); 
      Logger.getAnonymousLogger().severe(e.getMessage()); 
     } 
    } 
} 

此安裝程序屬於不同的項目,我不應該改變它。但我想從我的磁盤使用一個單獨的logging.properties文件(最好來自我有cmd程序的同一個文件夾)。我如何強制這個安裝程序使用我的logging.properties文件,而不是從資源文件夾中的默認文件?有沒有辦法強制這個?

回答

0

你可以試試這個:

String yourFilePath = "./yourLogProperties.properties"; 
LogManager.getLogManager().readConfiguration(new FileInputStream(yourFilePath); 

屬性將存儲在執行您的應用程序在同一文件夾中的文件被加載。

更新:

我正在尋找一點點如何通過性能直通命令行,並有一個相當不錯的解釋here。所以,你的情況,你需要這樣的事:

java -jar -Djava.util.logging.config.file="./yourLogProperties.properties" YourApp.jar 

您也可以測試,如果它的工作原理做一個簡單的測試:

public class Tests {  
    public static void main(String[] args) { 
     System.out.println(System.getProperty("java.util.logging.config.file")); 
    }  
} 

從命令行運行這個你應該得到的答案./yourLogProperties.properties

+0

感謝您的意見。但這裏的問題是我仍然需要修改Install類。我希望能夠通過命令行指定屬性文件,這可能嗎? –

+0

你很好。在這種情況下,你應該看看[this](http://stackoverflow.com/questions/7351533/set-multiple-system-properties-java-command-line)。你將需要像'java -jar -Djava.util.logging.config.file =「./ yourLogProperties.properties」' 我沒有做任何測試,所以我不能確定它是否會工作。試試,讓我們知道如果是這樣! – dic19

+0

謝謝。這似乎工作。出於某種原因,我想我應該強制java.util.logging文件是一個系統屬性。 –

相關問題