* log4j [#k22a0d1b]
 log4jを使ってみたメモ。
 
 #contents
 
 ** Log4j の出力先をコードで変更する [#j167a69c]
 
 例えば、"hoge" というディレクトリに出力する場合、System.property に設定。
 
 #code(Java){{
  System.setProperty("log.dir", "/hoge/");
 }}
 
 で、log.dir を log4j.xml から参照する。
 
 ''log4j.xml''
 #code(HTML){{
  <!-- アペンダ -->
  <appender name="record" class="org.apache.log4j.DailyRollingFileAppender">
     <param name="File" value="${log.dir}/app.log" />
     <param name="Append" value="true" />
     <param name="DatePattern" value="'.'yyyy-MM-dd" />
     <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss},%m%n" />
     </layout>
  </appender>
 }}
 
 この設定を反映させる。
 
 #code(Java){{
  DOMConfigurator.configure("log4j.xml");
 }}
 
 渡すパスはアプリケーションのルートディレクトリの下という前提。&br;
 このパスはクラスローダを使えば取得できるので、
 
  ClassLoader loader = Thread.currentThread().getContextClassLoader()
 #code(Java){{
  ClassLoader loader = Thread.currentThread().getContextClassLoader();
  DOMConfigurator.configure(loader.getResource("log4j.xml"));
 
 }}
 とするか、Servlet なら
 
  ServletContext context = getServletContext()
 #code(Java){{
  ServletContext context = getServletContext();
  DOMConfigurator.configure(context.getRealPath("WEB-INF/classes/log4j.xml"));
 }}
 
 などとする。
 
 
 
 ** Tomcat 5.5 でログ出力エラー [#zad25710]
 
 ファイルの読み書きをするときに、パーミッションが不正というエラーが出ることがある。
 
 例えば、ログファイルの書き込みで、
 
  log4j:ERROR setFile(null,true) call failed.
  java.io.FileNotFoundException: /hoge/app.log (Permission denied)
         at java.io.FileOutputStream.openAppend(Ljava.lang.String;)V(Native Method)
         at java.io.FileOutputStream.<init>(FileOutputStream.java:177)
         at java.io.FileOutputStream.<init>(FileOutputStream.java:102)
  ...
 
 
 とか。
 
 ディレクトリのパーミッションを777とかに変更してもやはり状況変わらず。
 
 そんなときは、Tomcatのセキュリティをはずしてみると上手くいくことがある。
 
 /etc/init.d/tomcat5 を次のように変更。
 
  # Use the Java security manager? (yes/no)
  #TOMCAT5_SECURITY=yes ←コメントアウト
  TOMCAT5_SECURITY=no
 
 
 
 ** 参考 [#o66181a5]
 - [[Apache Logging Service Project:http://logging.apache.org/log4j/]]
 - [[Log4j project(日本語):http://www.ingrid.org/jajakarta/log4j/jakarta-log4j-1.1.3/docs-ja/documentation.html]]
 - [[Log4J徹底解説:http://www.nurs.or.jp/~sug/soft/log4j/index.htm]]
 
 -----
 [[Java 開発環境構築]]

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