我在寫一個簡單的Groovy應用程序,需要做一些日誌記錄。事物記錄方式的實際屬性取決於特定的環境。例如,在開發過程中,我只想登錄到控制檯,在測試和生產過程中,我可能想要寫入一個文件,而在生產中,我可能想發送最嚴重事件的電子郵件。Groovy - 根據環境配置日誌記錄屬性
現在我在做什麼看起來像這樣:
import org.apache.log4j.Logger
import org.apache.log4j.PropertyConfigurator
class BaseClass {
protected config
static Logger logger = Logger.getLogger(BaseClient.class)
def BaseClass(env) {
def configFilePath = // whatever
config = new JsonSlurper().parseText(configFile.text)[options.env]
def logConfigFilePath = ['somelogdir', config.log_file].join(File.separator)
PropertyConfigurator.configure(logConfigFilePath)
}
}
,然後我所有的類,需要做記錄從BaseClass
繼承。
通過這種方式,我可以爲每個環境指定一個不同的文件名,然後從那裏讀取日誌配置文件。但似乎很多樣板,並迫使我使用可能不理想的層次結構。
另一方面,here我看到我可以通過簡單的註釋獲取記錄器。
有沒有辦法根據環境獲取不同的記錄器 - 可以在運行時設置?
'PropertyConfigurator.configure(config.toProperties()) '行會全局應用於所有記錄器嗎?因爲不然的話,這就是我在我的問題中已經做的事情,而且問題就在於我不想在所有需要日誌記錄的類中都有這些行 – Andrea 2012-07-17 07:12:59
是的,調用'PropertyConfigurator.configure'將配置所有記錄器。沒有必要在每個班級都做。一旦開始就足夠了。 – ataylor 2012-07-17 14:34:21
任何人都知道如何做相當於log4j2?谷歌搜索尚未指出答案。 – user944849 2016-11-08 14:59:08