#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>
ちなみに文字エンコーディングを指定するには
 <param name="Encoding" value="EUC-JP" />
などと指定します。

*** Appenderの設定を引き継がない [#z06ea23a]
Log4jは基本的に上のカテゴリのAppenderを引き継ぐようです。ようするにRootでコンソールとやってたら、下のカテゴリではデフォルトでコンソールに出力してしまうようです。以下のようなプロパティでそれを回避します。
 log4j.additivity.[カテゴリ名]=false
これでこのカテゴリはRootの設定を引き継がなくなります。

XML形式で指定するときは
 <logger name="[カテゴリ名]" additivity="false">
とします。

[[ふぅ: [ log4j ] log4j.xml>http://phew-hum.cocolog-nifty.com/blog/2008/01/log4j_log4jxml.html]]


***ファイルパスなどを外出しする [#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(おもしろかった[78],そうでもない[4])
#vote(おもしろかった[79],そうでもない[4])
- すごぉぉぉぉぉおく助かりました!!!!ありがとうございます!!!! -- [[log]] &new{2014-04-21 (月) 17:20:11};
- It's a mammoth playground built of mountains, hills, lakes, rivers, valleys, woodlands,and beaches. aedkaddaedee -- [[Johna128]] &new{2014-05-25 (日) 02:26:44};

#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS