yuu_nkjm blog
2010-10-13(Wed) 編集
[Java][log4j] log4jで生成するログファイルの位置をJavaシステムプロパティで切りかえる
ある環境でlog4jを使ってログを吐かせようとしたとき,log4j.xml内で絶対パスを使ってファイル指定をしてしまうと,違う実行環境(特にWindowsとLinuxとか異なるOS環境)では,困ったことになってしまう.
<appender name="file" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="E:/hoge/log/sim.log"/>
Linux上では普通"E:/hoge/log"なんてディレクトリは存在しない.
Java/Log4j - きのさいとを参考にして,Javaのシステムプロパティを用いることで,ログファイルの生成場所を変更することが出来た.
<appender name="file" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="${log.home}/sim.log"/>
上記のようにlog4j.xmlに書く.そして,実行時にJVMの引数に "-Dlog.home=E:/hoge/log"や"-Dlog.home=/home/usr/hoge/log"という様な形式で,log.homeに値を代入する.
JavaのシステムプロパティはSystem (Java Platform SE 6) getPropertiesなどを参考のこと.
つか,javaの実行ディレクトリからの相対パスにするのが簡単だな.