ググると Spring も込みの設定方法しか出てこなかったので,メモしておきます.言語は Scala,ビルドツールは sbt を使用しています.logback-classic
を使用しているようです.
やろうとしていること
- logback.xml 内で,開発環境/ステージング環境/本番環境それぞれでログの仕方を切り替えたい場合
- かつ,環境情報は
System.setProperty(key, value)
あるいは環境変数で設定されている場合
ハマったポイント
- ドキュメントどおりに if 文を書いてみる.
- 環境変数やシステムプロパティを正しく設定しているのに,なぜか
<if condition='p("key").contains("value")'>
がうまく効いていない. - それゆえ,if 文の内容がいつまで経っても反映されない.
原因
- ログ上に出ている警告を注意深く読むと,「janino」というライブラリがクラスパスにないと言われる (知らんがな).
解決策
- janino というライブラリを Maven や sbt で依存関係に加えておく.
一応,このページ の if 文の箇所に,
Note that conditional processing requires the Janino library.
とは書いてありますね.Janino Library の設定方法まで丁寧に書いてあります.
お役に立ちますと幸いでございます.ちなみにいろいろ試して,30分くらい溶かしました.エラーメッセージは丹念に読みましょう.
ちなみに
この構文で取得できる p("key") の参照先は,システムプロパティでもよいですし,環境変数でもよいです.
システムプロパティであれば,java jar xxx.jar -DENV=dev
などと書けば (あるいは System#setProperty
を用いる手もあります), p("ENV").contains("dev")
で dev
という値かどうか判定できます..また,環境変数であれば,環境変数に ENV=dev
とセットしたあとに同様に p("ENV").contains("dev")
で判定可能です.