Top / Java / Log4j

Appenderの種類/設定

ConsoleAppender?

  • 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?

  • 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の設定を引き継がない

Log4jは基本的に上のカテゴリのAppenderを引き継ぐようです。ようするにRootでコンソールとやってたら、下のカテゴリではデフォルトでコンソールに出力してしまうようです。以下のようなプロパティでそれを回避します。

log4j.additivity.[カテゴリ名]=false

これでこのカテゴリはRootの設定を引き継がなくなります。

XML形式で指定するときは

<logger name="[カテゴリ名]" additivity="false">

とします。

ふぅ: [ log4j ] log4j.xml

ファイルパスなどを外出しする

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です。

関連リンク


この記事は

選択肢 投票
おもしろかった 80  
そうでもない 4  
  • すごぉぉぉぉぉおく助かりました!!!!ありがとうございます!!!! -- log? 2014-04-21 (月) 17:20:11
  • It's a mammoth playground built of mountains, hills, lakes, rivers, valleys, woodlands,and beaches. aedkaddaedee -- Johna128? 2014-05-25 (日) 02:26:44

Top / Java / Log4j

現在のアクセス:78346


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-03-04 (木) 16:38:09 (1147d)