SAK 図書館
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 編資料