#topicpath ---- #contents **Appenderの種類/設定 [#pf5803c8] ***ConsoleAppender [#h4a829d2] -properties形式 # APPENDER の設定 log4j.appender.A1=org.apache.log4j.ConsoleAppender # PatternLayoutの設定 log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c - %m%n -xml形式 <appender name="System.out" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n"/> </layout> </appender> ***FileAppender [#sfa0fbe4] -xml形式 <appender name="file" class="org.apache.log4j.FileAppender"> <param name="File" value="file.log" /> <param name="Append" value="false" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%t %-5p %c{2} - %m%n"/> </layout> </appender> *** Appenderの設定を引き継がない [#z06ea23a] Log4jは基本的に上のカテゴリのAppenderを引き継ぐようです。ようするにRootでコンソールとやってたら、下のカテゴリではデフォルトでコンソールに出力してしまうようです。以下のようなプロパティでそれを回避します。 log4j.additivity.[カテゴリ名]=false これでこのカテゴリはRootの設定を引き継がなくなります。 ***ファイルパスなどを外出しする [#jaaff84b] Log4jの設定ファイルに <appender name="file" class="org.apache.log4j.FileAppender"> <param name="File" value="c:/temp/file.log" /> <param name="Append" value="false" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%t %-5p %c{2} - %m%n"/> </layout> </appender> などとログの出力先を直接書いてしまうと、環境によって切り替えることができなくなりとても不便です。そこで調べたのですが、Log4jの設定ファイルはシステムプロパティを用いて変数を置換することができるようです。具体的には <appender name="file" class="org.apache.log4j.FileAppender"> <param name="File" value="${log.home}/file.log" /> <param name="Append" value="false" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%t %-5p %c{2} - %m%n"/> </layout> </appender> と出力先を${log.home}などの変数にしておいて、、 System.setProperty("log.home", "c:/temp/"); DOMConfigurator.configure("log4j.xml"); というように初期化前にプロパティを指定しておけばOKです。もしくはVMの引数に -Dlog.home=c:/temp としてプロパティを指定するでもOKです。 ***関連リンク [#h468065a] -http://www.techscore.com/tech/Java/Log4J/2.html -http://www.okisoft.co.jp/esc/log4j/index.html ---- この記事は #vote(おもしろかった[21],そうでもない[1]) #comment #topicpath SIZE(10){現在のアクセス:&counter;}