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 編資料