ここからログの概要を調べています: http://docs.oracle.com/javase/6/docs/technotes/guides/logging/overview.html#1.15 そして、次の問題があります。簡単な WEB アプリケーションを作成し、次のコードを使用します。
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Logger logger = Logger.getLogger("com.NewServlet.severe");
Logger logger2 = Logger.getLogger("com.NewServlet.Fine");
Handler fh=new FileHandler("/C:/Html/mylogs.txt");
Handler fh2=new FileHandler("/C:/Html/mylogs2.txt");
//Logger.getLogger("com.NewServlet").addHandler(fh);
//Logger.getLogger("com.NewServlet.Fine").addHandler(fh2);
// Logger.getLogger("com.NewServlet").setLevel(Level.SEVERE);
// Logger.getLogger("com.NewServlet.Fine").setLevel(Level.FINE);
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String number=request.getParameter("value");
Integer num=Integer.valueOf(number);
int a= num.parseInt(number);
int result=0;
try {
/*
* TODO output your page here. You may use following sample code.
*/
result=20/a;
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet NewServlet</title>");
out.println("</head>");
out.println("<body>");
//logger2.fine("doing stuff");
logger2.addHandler(fh2);
logger2.setLevel(Level.FINE);
logger2.fine("doing ALL OK");
//logger2.log(Level.FINE,"doing OK");
out.println("<h1>Servlet NewServlet at " + result + "</h1>");
out.println("</body>");
out.println("</html>");
}
catch ( Exception e1){
logger.addHandler(fh);
logger.setLevel(Level.SEVERE);
logger.log(Level.SEVERE, "troubles", e1);
e1.printStackTrace();
}
finally {
out.close();
}
}
私の問題は、ログ メッセージが 2 回表示されることです (1 つはサーバー コンソールに、もう 1 つはログ ファイルに表示されます。ログ ファイルのみにメッセージが表示され、コンソールには表示されないようにするにはどうすればよいですか?)、もう 1 つの問題はLever SEVERE のロガーの場合、サーバー コンソールにのみエラー メッセージが表示されます。作成された .txt mylogs.txt は空です。なぜこれが起こるのですか?