設定や管理が容易なのは以下で書いた.
http://d.hatena.ne.jp/shin/20080724/p2
http://d.hatena.ne.jp/shin/20080724/p3
さらに補足としてGlassfishとの相性がいいことも書いた.
http://d.hatena.ne.jp/shin/20080724/p4
というわけで実際にGlassfishで動かした場合どうなるのかを書いてみる.
サーブレットのコード(NetBeansのサーブレットの新規作成の雛形に追加しただけ.web.xmlの設定等も全自動なのでテストはらくちん)
package logtest; import java.io.IOException; import java.io.PrintWriter; import java.util.logging.Logger; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class NewServlet extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { out.println("<html>"); out.println("<head>"); out.println("<title>Servlet NewServlet</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Servlet NewServlet at " + request.getContextPath () + "</h1>"); out.println("</body>"); out.println("</html>"); Logger logger = Logger.getLogger(this.getClass().getCanonicalName()); logger.info("infoだよ"); logger.warning("warningだよ"); logger.fine("fineだよ"); } finally { out.close(); } } //ほかは省略 }
管理ツールのログ設定を開く.
左のメニューからアプリケーションサーバー>ログ>ログレベルと選択.
標準的なコンポーネントはドロップダウンリストで選択するだけ.文章にあるように一番下にスクロールしてプロパティーを追加をする.
使える文字は上の説明どおり.これでいつでも設定が可能.もちろん,この設定を変えてもサーバーの再起動は必要ない.
運用にGlassfishを使うことは多いと思うが,開発時でも非常に楽々使えるわけだ.むしろログレベルの頻繁な変更は開発耳朶と思うので開発時のほうが重要だったりするのだが.
http://d.hatena.ne.jp/nowokay/20080724#1216920606
にあるようにログのON/OFFをするだけならば,なおさら標準APIが一番使いやすいことになる.別途ライブラリを用意することもないし.開発時はたとえばLog4J,運用はGlassfishなので標準ロギングなど実装を切り替えたい場合は,やはりCommons Loggingのようにラッピングするものを使用したほうがよい.ネイティブなロギングAPIを直接使用するのは避けるべきだろう.