2013-02-22 34 views
0

如何獲得Log4j的實例初始化從配置文件中讀取並注入性質注射爲了

我的代碼後:

private static String LogPath; 

@Value("#{settings['LogDirPath']}") 
private static void setLogDirPath(String LogDirPath) 
{ 
     LogPath = LogDirPath; 
} 

private static final Logger fileLogger = LoggerSetup.GetLogger(<Class Name>, <Logger Name>, LogPath); 

然而,當我踏進GetLogger,該日誌路徑始終爲空。

如何確保在配置文件注入完成後調用fileLogger?

UPDATE1:

@Value("#{settings['LogDirPath']}") 
private String LogPath; 

private static Logger googleLogger = LoggerSetup.GetLogger(<Class Name>, <Logger Name>, LogPath); 

回答

0

初始化fileLogger變量(因此不能是最終)在setLogDirPath()方法。一個類字段在類加載時被初始化,然後才能調用該類的任何方法。

這就是說,我敢肯定你不能在靜態方法上使用這個註解。 Spring注入字段,構造函數或實例setter方法。

+0

如果在我的操作中更新'UPDATE1',它會更好嗎? '最終'給了我什麼? – user721264 2013-02-22 23:31:33

+0

這甚至不會編譯。您指的是來自靜態初始化程序的實例字段。同樣,尊重Java命名約定:變量以小寫字母開頭。你的記錄器不應該是靜態的。 – 2013-02-22 23:34:23

+0

我沒有使用我的代碼,並將PIA重構以正確命名約定/樣式。 – user721264 2013-02-22 23:43:04