SAK 図書館

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

JAVA Servlet、JSP 基礎編13 - ロギング、commons-logging、log4j.properties

■ロギング

  ロギングとやらを試してみた。
  使用したパッケージは、
    commons-logging-current.zip
    jakarta-log4j-1.2.8.zip
  である。

■log4j

  commons-logging がロギングの共通インタフェースを提供して、log4j などを
  使う仕組みになっているようである。
  何を使うかは優先順位があったり、設定できたりするが、うちの環境では
  log4j が優先されていた。

  Tomcat の catalina.sh で、JAVA_OPTS に使用するものを設定もできたが、
  不要とわかって消してしまったのでコードを失念してしまった。(^^;
  控えておけば良かった...

■jar 配置

  次の jar を WEB-INF/lib/ に配置した。

  commons-logging.jar
  commons-logging-api.jar
  log4j-1.2.8.jar

■log4j.properties 配置

  log4j の設定ファイル log4j.properties を WEB-INF/classes/ に配置した。
  log4j.properties は、次のように作成した。
  FileAppender でやったら、いきなり 8MB 以上のファイルができて確認困難に
  なってしまい、FileAppender 容量指定がわからず、RollingFileAppender の
  MaxFileSize で 1MB 指定した。
  運用に使用するわけではなく、開発用なのでこれでよしとした。

log4j.rootCategory=, A2
log4j.appender.A2=org.apache.log4j.RollingFileAppender
log4j.appender.A2.MaxFileSize=1MB
log4j.appender.A2.MaxBackupIndex=0
log4j.appender.A2.File=j:/cygwin/tomcat4.1/logs/_saklog.out
log4j.appender.A2.Append=false
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d{yyyy.MM.dd,HH:mm:ss,SSS},%F:%L,%p,%m%n

  digester を使用する場合、DEBUG レベルメッセージが山ほど出力され、
  動作スピードが著しく低下する。(^^;
  何か抑制方法があるのかもしれないが、忙しくて調べられなかった。
  とりあえず、log4j.rootCategory で INFO レベル以上のみのロギングに
  しないと、開発時にも遅くて我慢ならない。
  メッセージレベルの高い順は、FATAL、ERROR、WARN、INFO、DEBUG である。
  よって、DEBUG メッセージだけをパスするには、次のように
  log4j.rootCategory=INFO, A2 とする。
  こうすると、FATAL、ERROR、WARN、INFO だけが出力される。

log4j.rootCategory=INFO, A2
log4j.appender.A2=org.apache.log4j.RollingFileAppender
log4j.appender.A2.MaxFileSize=1MB
log4j.appender.A2.MaxBackupIndex=0
log4j.appender.A2.File=j:/cygwin/tomcat4.1/logs/_saklog.out
log4j.appender.A2.Append=false
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d{yyyy.MM.dd,HH:mm:ss,SSS},%F:%L,%p,%m%n

■log4j テスト用 Servlet

// test.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class test extends HttpServlet {
  protected Log log = LogFactory.getLog(this.getClass());

  public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {

    // ログ出力テスト
    log.info ("メッセージ sak_test_msg");
    log.debug("メッセージ sak_test_msg");
    log.info ("メッセージ sak_test_msg");
    log.warn ("メッセージ sak_test_msg");
    log.error("メッセージ sak_test_msg");
    log.fatal("メッセージ sak_test_msg");

    // HTML 出力
    PrintWriter rw = res.getWriter();
    rw.println("<HTML>");
    rw.println("<HEAD>");
    rw.println("<TITLE>test</TITLE>");
    rw.println("</HEAD>");
    rw.println("<BODY>");
    rw.println("<P>test</P>");
    rw.println("</BODY>");
    rw.println("</HTML>");
  }
}

■log4j テスト結果(_saklog.out)

2003.08.05,18:57:18,140,test.java:14,INFO,メッセージ sak_test_msg
2003.08.05,18:57:18,140,test.java:15,DEBUG,メッセージ sak_test_msg
2003.08.05,18:57:18,140,test.java:16,INFO,メッセージ sak_test_msg
2003.08.05,18:57:18,156,test.java:17,WARN,メッセージ sak_test_msg
2003.08.05,18:57:18,156,test.java:18,ERROR,メッセージ sak_test_msg
2003.08.05,18:57:18,156,test.java:19,FATAL,メッセージ sak_test_msg

■JAVA Servlet、JSP 基礎編資料
■JAVA Servlet、JSP + PostgreSQL 編資料
■JAVA Servlet、JSP + Oracle9i 編資料
■PostgreSQL 編、JAVA Servlet、JSP 編資料
■MySQL 編資料
■SQL 基礎編資料
■SQL 基礎実地編資料
■SQL チューニング編資料
■Oracle PL/SQL 編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索



Copyright (C) 1999-2024 Y.SAK