jsp+servlet+JavaBean模式下,可以做個簡單的日志記錄,日志文件保存在服務器.(Tomcat)
package controller;
import java.io.File;
import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(name = "test", urlPatterns = "/*")
public class MainServlet extends HttpServlet {
private static final long serialVersionUID = 7922611206674042939L;
private static final String slash = File.separator;
private static final String LOG_PATH = slash + "pro.log";
public Logger logger = null;
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println("container opening");
try {
logger = Logger.getLogger(MainServlet.class.getName());
logger.setUseParentHandlers(false);
logger.addHandler(new FileHandler(config.getServletContext()
.getRealPath(LOG_PATH)));
} catch (Exception e) {
System.out.println("testing");
logger = Logger.getLogger(MainServlet.class.getName());
}
}
@Override
public void destroy() {
System.out.println("container closed");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
try {
String[] str = {};
System.out.println(str[-1]);
} catch (Exception e) {
System.out.println(4);
logger.log(Level.WARNING, "數組下標越界", e);
}
}
}
日志文件一般安全要求不高,不需要至于WEB-INF目錄下,直接輸入日志名會自動生成.
java.util.logging.FileHandler類有個重寫的構造器,可選擇是否追加記錄.看具體需求.
相對于log4j有很多局限性,但適合小型項目的簡單日志記錄.
個人感覺很適合打樁使用,畢竟無需引入額外的jar包,將文件處理器修改為控制臺處理器,取消日志本地化后,就可以隨意打樁調式了.當項目部署時,調用
logger.setlevel(Level.OFF);
即可