Redirecting log4j output to Servlet output

// Usually when debugging servlet app, I like to see the log4j output, this is a quick hack on how to redirect / add log4j output

protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
    throws ServletException, IOException {
    
    Logger logger = Logger.getRootLogger();
    String appenderName = "servletOutputAppender";

    Appender servletAppender = logger.getAppender(appenderName);
    OutputStream out = resp.getOutputStream();
    PrintWriter writer = new PrintWriter(out, true);
    
    if ( servletAppender == null ) {
        servletAppender = new WriterAppender(new SimpleLayout(), out);
        servletAppender.setName(appenderName);
        logger.addAppender(servletAppender);
    }

    try {
        //do your own stuff here
    } finally {
        logger.removeAppender(appenderName);
        writer.flush();
    }
}

0 Comments

Post A Comment