ロギングを行う必要がある単純な 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
ます。
このようにして、環境ごとに異なるファイル名を指定でき、そこからロギング構成を読み取ることができます。しかし、それは多くのボイラープレートのようであり、理想的ではないかもしれない階層を使用せざるを得ません。
一方、ここでは単純なアノテーションでロガーを取得できることがわかります。
環境に応じて異なるロガーを取得する方法はありますか?実行時に設定される可能性がありますか?